qbittorrent / qBittorrent

qBittorrent BitTorrent client
https://www.qbittorrent.org
Other
28.24k stars 3.97k forks source link

Moving qBittorrent window between monitors with different resolution/scaling ruins interface #15302

Closed illusive-man closed 3 years ago

illusive-man commented 3 years ago

Bug report

Checklist

Description

qBittorrent info and operating system(s)

What is the problem

Dragging qBittorrent window between two monitors with different scaling ruins the interface. I have two monitors - 4K (main) and 2K (secondary) in the "Extend these monitors" mode. The former has 225% scaling, the latter one - 125%. If I start QBittorrent on the main display and then drag to secondary one, the interface become messed up in terms of disappeared buttons, misplaced mouse pointer (it activates controls an inch above the actual pointer location - e.g. when pointing at 5th line in the torrent list, it lights up the first one), and it's impossible to press any interface button as well. I've switched monitors and make 2K as main and 4K as secondary, but the behavior is still the same as described above. Reinstalling and resetting the settings and clearing the data - nothing helps. Additionally if I start new torrent and popup window with torrent and path selection is open - there's no OK and Cancel buttons and it's impossible to select a path on any monitor other than the one where qBittorrent was first started.

Detailed steps to reproduce the problem

  1. Start qBittorrent
  2. Drag with mouse or send to secondary monitor with different scaling with Shift + Win + L/R Arrow
  3. Try to select specific line or control.
  4. Look at distorted interface (see above).

What is the expected behavior

qBittorrent interface is working as it is intended to. With no mouse pointer or controls misplacement/disappearance.

Extra info (if any)

In my opinion, your app doesn't apply scaling of another display and stays the same (thus misplacement ) as for original monitor it was started on (as a proof of my theory - when moving the window from 4K to 2K - the font appears as very large). I've never seen this behavior before. Other apps work as they should in terms of rescaling.

Attachments

[Preferences] Queueing\QueueingEnabled=false General\SpeedInTitleBar=true Bittorrent\MaxConnecs=500 Connection\PortRangeMin=55091 IPFilter\BannedIPs=159.224.53.177 Scheduler\days=0 General\MinimizeToTray=false Advanced\confirmTorrentRecheck=true Advanced\IgnoreLimitsLAN=true Advanced\trackerPort=9000 General\NoSplashScreen=true General\UseCustomUITheme=false Connection\GlobalDLLimitAlt=0 MailNotification\email= Queueing\MaxActiveTorrents=20 General\HideZeroValues=false Bittorrent\uTP_rate_limited=false MailNotification\smtp_server=smtp.changeme.com Downloads\DblClOnTorDl=0 General\Locale=en Downloads\NewAdditionDialog=true Downloads\SavePath=D:/MOVIES/_PRIME QUEUE/ Connection\ResolvePeerCountries=true Advanced\DisableRecursiveDownload=false Bittorrent\MaxUploads=8 Connection\ResolvePeerHostNames=false Advanced\RecheckOnCompletion=false Advanced\confirmRemoveAllTags=true WebUI\Enabled=false Bittorrent\MaxConnecsPerTorrent=100 General\ExitConfirm=false General\HideZeroComboValues=0 MailNotification\req_ssl=false Connection\GlobalUPLimitAlt=0 General\CloseToTrayNotified=true MailNotification\username= General\CustomUIThemePath=D:/_FROM_DISK_E/SETTINGS/black.qbtheme Queueing\MaxActiveUploads=15 Connection\GlobalDLLimit=30720 Advanced\TrayIconStyle=0 Advanced\EnableIconsInMenus=true Win32\NeverCheckFileAssocation=true General\AlternatingRowColors=true General\PreventFromSuspendWhenDownloading=true Downloads\DblClOnTorFn=1 Advanced\updateCheck=true MailNotification\password= Connection\alt_speeds_on=false Advanced\confirmTorrentDeletion=true Downloads\NewAdditionDialogFront=true MailNotification\enabled=false General\StartMinimized=false General\SystrayEnabled=true Scheduler\start_time=@Variant(\0\0\0\xf\x1\xb7t\0) MailNotification\req_auth=false MailNotification\sender=qBittorrent_notification@example.com Queueing\MaxActiveDownloads=3 General\PreventFromSuspendWhenSeeding=true Scheduler\end_time=@Variant(\0\0\0\xf\x4J\xa2\0) Connection\UPnP=true Bittorrent\MaxUploadsPerTorrent=4 General\CloseToTray=true

[TrackerEntriesDialog] Size=@Size(506 500)

[TorrentProperties] qt5\FilesListState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4\x8c\0\0\0\x6\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x6\0\0\x2/\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\xcd\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff) SplitterSizes="95,131" Trackers\qt5\TrackerListState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\xd2\0\0\0\b\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\b\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x2\xef\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\x8b\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64) Visible=true Peers\qt5\PeerListState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\xe\0 \0\0\0\x1\0\0\0\r\0\0\0\x64\0\0\x6\x41\0\0\0\xe\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\xe\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x1\x91\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff) CurrentTab=1

[MainWindow] qt5\vsplitterState=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\0\0\0\ai\x1\xff\xff\xff\xff\x1\0\0\0\x1\0) geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\xff\xff\xff\xff\0\0\0\"\0\0\x6\xab\0\0\x3\xc0\0\0\x1\xd9\0\0\x1\b\0\0\x4,\0\0\x2-\0\0\0\0\x2\0\0\0\x6\xab\0\0\0\0\0\0\0?\0\0\x6\xaa\0\0\x3\xbf)"

[GUI] Notifications\Enabled=true Log\Enabled=false DownloadTrackerFavicon=false Notifications\TorrentAdded=false

[Application] FileLogger\AgeType=1 FileLogger\MaxSizeBytes=66560 FileLogger\Age=1 FileLogger\Path=C:/Users/goujon/AppData/Local/qBittorrent/logs FileLogger\DeleteOld=true FileLogger\Backup=true FileLogger\Enabled=true

[OptionsDialog] Size=@Size(789 631) HorizontalSplitterSizes=119, 643

[Locking] locked=false password_PBKDF2="@ByteArray(POdAiLyK3OR6gWQdeP27aA==:eaCJcN+mSqSP8ouSv8HJvDbheXK3xLJFqUiYg/YwQ0ifRFmYB9CGUq66OxRi6Lqzw5ze/mkvWVBcSXX0f6kGvA==)"

[CookiesDialog] Size=@Size(618 369) CookiesViewState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2-\0\0\0\x5\x1\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x5\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x9d\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64)

[RSS] AutoDownloader\DownloadRepacks=true AutoDownloader\SmartEpisodeFilter=s(\d+)e(\d+), (\d+)x(\d+), "(\d{4}[.\-]\d{1,2}[.\-]\d{1,2})", "(\d{1,2}[.\-]\d{1,2}[.\-]\d{4})"

[SpeedWidget] graph_enable_1=false Enabled=true graph_enable_2=true graph_enable_9=false graph_enable_4=true graph_enable_3=false graph_enable_7=false graph_enable_8=true graph_enable_5=false graph_enable_6=true graph_enable_0=true period=3

[TransferList] qt5\HeaderState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\xe\x1\0\0\0\x1f\0\0\0\0\0\0\0\x2\0\0\0\x3\0\0\0\x4\0\0\0\x5\0\0\0\x17\0\0\0\x6\0\0\0\a\0\0\0\r\0\0\0\n\0\0\0\v\0\0\0\b\0\0\0\f\0\0\0\xe\0\0\0\x1\0\0\0\xf\0\0\0\x10\0\0\0\x11\0\0\0\x12\0\0\0\x13\0\0\0\t\0\0\0\x14\0\0\0\x15\0\0\0\x16\0\0\0\x19\0\0\0\x18\0\0\0\x1a\0\0\0\x1b\0\0\0\x1c\0\0\0\x1d\0\0\0\x1e\0\0\0\x1f\0\0\0\0\0\0\0\xe\0\0\0\x1\0\0\0\x2\0\0\0\x3\0\0\0\x4\0\0\0\x6\0\0\0\a\0\0\0\v\0\0\0\x14\0\0\0\t\0\0\0\n\0\0\0\f\0\0\0\b\0\0\0\r\0\0\0\xf\0\0\0\x10\0\0\0\x11\0\0\0\x12\0\0\0\x13\0\0\0\x15\0\0\0\x16\0\0\0\x17\0\0\0\x5\0\0\0\x19\0\0\0\x18\0\0\0\x1a\0\0\0\x1b\0\0\0\x1c\0\0\0\x1d\0\0\0\x1e\0\0\0\x1f\xd1\xd0\x7f|\0\0\0\x13\0\0\0\a\0\0\0\x64\0\0\0\x6\0\0\0\x64\0\0\0\x3\0\0\0\x64\0\0\0\0\0\0\0\x64\0\0\0\xf\0\0\0\x64\0\0\0\r\0\0\0\x64\0\0\0\f\0\0\0\x64\0\0\0\x17\0\0\0\x64\0\0\0\x16\0\0\0\x64\0\0\0\x15\0\0\0\x64\0\0\0\x13\0\0\0\x64\0\0\0\x12\0\0\0\x64\0\0\0\x11\0\0\0\x64\0\0\0\x10\0\0\0\x64\0\0\0\x1e\0\0\0\x64\0\0\0\x1d\0\0\0\x64\0\0\0\x1c\0\0\0\x64\0\0\0\x1b\0\0\0\x64\0\0\0\x1a\0\0\0\x64\0\0\x6\x8f\0\0\0\x1f\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x1f\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x1\xc9\0\0\0\x1\0\0\0\0\0\0\0G\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\xea\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0$\0\0\0\x1\0\0\0\0\0\0\0S\0\0\0\x1\0\0\0\0\0\0\0\\0\0\0\x1\0\0\0\0\0\0\0I\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0R\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0g\0\0\0\x1\0\0\0\0\0\0\0\xc0\0\0\0\x1\0\0\0\0\0\0\0\x9c\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64) SubSortColumn=24 SubSortOrder=0

[AddNewTorrentDialog] qt5\treeHeaderState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x6\x34\0\0\0\x3\0\0\0\x5\0\0\0\x64\0\0\0\x4\0\0\0\x64\0\0\0\x2\0\0\0\x64\0\0\x2\xfb\0\0\0\x6\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x6\0\0\x2\x33\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff) RememberLastSavePath=true DialogSize=@Size(1332 736) SplitterState=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x1\x1b\0\0\x1\0\0\xff\xff\xff\xff\x1\0\0\0\x1\0)

[Core] AutoDeleteAddedTorrentFile=Never

[AutoRun] program= ConsoleEnabled=false enabled=false

[ShutdownConfirmDlg] DontConfirmAutoExit=false

[TorrentAdditionDlg] save_path_history=E:/MOVIES TEMP, E:/SERIES, D:/MOVIES/_PRIME QUEUE, E:/COSMOS, E:/MOVIES UHD, E:/MOVIES, G:/.GOUJON, G:/.GOUJON/_KEEP_SEEDING

[AboutDialog] Size=@Size(545 308)

[BanListOptionsDialog] Size=@Size(360 450)

[TorrentOptionsDialog] Size=@Size(390 450)

[LegalNotice] Accepted=true

[BitTorrent] Session\GlobalMaxSeedingMinutes=7200

[TransferListFilters] selectedFilterIndex=0

xavier2k6 commented 3 years ago

@illusive-man Can you try the windows build below, it is a test build based on 4.3.7 with more dpiaware support.

You can extract & run it in portable mode or replace both qBittorrent.exe & qBittorrent.pdb files where you currently have qBittorrent installed.

Test Build:

https://github.com/xavier2k6/qBittorrent/suites/3442116007/artifacts/81621389

illusive-man commented 3 years ago

Yes, this build works flawlessly! Thanks! Will we see this fix in the coming release?

FYI What's interesting is that it only works when unpacked to a new location. Replacing old files for previous installation gives nothing at all.

xavier2k6 commented 3 years ago

Replacing old files for previous installation gives nothing at all.

Can you explain?

sakkamade commented 3 years ago

Replacing old files for previous installation gives nothing at all.

Can you explain?

I guess this:

replace both qBittorrent.exe & qBittorrent.pdb

?

EDIT: Oh, you mean what exacly is "gives nothing at all".

illusive-man commented 3 years ago

Sure. I've unpacked both .exe & .pdb files from your archive to install location for qBittorrent (replacing old files), exited the app from a tray icon and waited for couple secs for process to shutdown. Then I started qBittorrent but behavor remain the same. After unpacking to a completely new location, it works perfectly now.

illusive-man commented 3 years ago

Oh, sorry, my bad! :) I mean it didn't fix described behavor until I unpacked to a new location. :)

xavier2k6 commented 3 years ago

Are you sure the files were replaced correctly as you still had qBittorrent running??

Close app completely/make sure it's not running & then replace files.

illusive-man commented 3 years ago

Did it again, exiting the app prior replacing (no errors while doing that). After that compared files by content - those are new files definitely. Result is NOT dpiaware.

xavier2k6 commented 3 years ago

@illusive-man after replacing the two files where you have qBittorrent installed, what is shown in DPI Awareness column of Task Manager? (you may need to enable this column)

illusive-man commented 3 years ago

qBittorrent.exe : Per-Monitor

illusive-man commented 3 years ago

And when I start from a new location it reads: Per-Monitor (v2)

xavier2k6 commented 3 years ago

qBittorrent.exe : Per-Monitor

are the files dated 08/08/2021??

illusive-man commented 3 years ago

It's August 9 2021 (09/08/2021) for me (Moscow, GMT+3)

xavier2k6 commented 3 years ago

qBittorrent.exe : Per-Monitor

This suggests the "old files/original" to me dated 03/08/2021 & not the "New"

The "New" files should show Per-Monitor (v2) too even in the installed folder.....

illusive-man commented 3 years ago

TOTALCMD64_xgxQVOttF3

illusive-man commented 3 years ago

left: old files replaced right: unpacked files (new location)

Chocobo1 commented 3 years ago

@illusive-man Could you please post the file content of "qt.conf" in the left window?

illusive-man commented 3 years ago
[Paths]
Translations = translations

[Platforms]
;WindowsArguments = dpiawareness=1

FYI Uncommenting last line doesn't fix the issue.

xavier2k6 commented 3 years ago

@illusive-man what happens when you double-click the .exe from within your installed location C:\Program Files\qBittorrent?

illusive-man commented 3 years ago

I thought I told you already. If I start the .exe from the left pane it starts qBittorrent window in non-dpiaware mode. Closing it and starting the one on the right gives me qBittorrent in dpiaware mode. Either magic or manifest. )

xavier2k6 commented 3 years ago

I was just wondering if you were loading it from a shortcut that perhaps had other environment changes.

For me - this is what I get on my machines (when running it in portable mode & swapping out the originals)

Per-Monitor (v2)

EDIT: I exposed the Image path name column in Task Manager

illusive-man commented 3 years ago

Sorry for delay, I was pretty busy at the end of the week.

No, I was starting the app itself, not a shortcut. For left pane .exe it shows Per-Monitor and for the right one Per-Monitor (v2).

I don't get it myself, but it's exactly as it is.

illusive-man commented 3 years ago

Hi. If you're going to implement dpiaware behavior in the future release, we can close this issue. Let me know which version to await.

xavier2k6 commented 3 years ago

@illusive-man Qt are going to be doing it by default in Qt6. there's currently a 4.4.0 qt6 rc1 version available to use for windows 10+ on the main site.

qBittorrent 4 4 0_RC1_Qt6_PMV2

We will migrate to Qt6 in the near future but no final eta yet.

illusive-man commented 3 years ago

@xavier2k6 Thanks for the info. Then there's no point in keeping this issue open! ;)