Opened 4 years ago
Last modified 13 months ago
#3419 new bug
UI Does Not Retain Positioning
Reported by: | davidhart | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 2.0.6 |
Component: | GTK UI | Version: | 2.0.3 |
Keywords: | Cc: |
Description
This is not a critical issue.
When opening deluge the bottom panel is extremely short; displaying only the first two lines of Status.
The expectation is that, if I raise the panel to show every item in the menu, from Status to Stats, the positioning will be retained.
On a new session Deluge reverts back to the very short panel.
Distro=Fedora 32
Desktop=KDE plasma
Package via RPM
Packages installed: deluge-2.0.3-7.fc32.noarch
deluge-console-2.0.3-7.fc32.noarch
deluge-images-2.0.3-7.fc32.noarch
deluge-daemon-2.0.3-7.fc32.noarch
deluge-gtk-2.0.3-7.fc32.noarch
deluge-common-2.0.3-7.fc32.noarch
deluge-web-2.0.3-7.fc32.noarch
Command line=deluge-gtk (same result with simply deluge)
Toy=Intel i7 based Dell laptop
Attachments (2)
Change History (15)
by , 4 years ago
Attachment: | Screenshot_20200802_152027.jpg added |
---|
comment:1 by , 4 years ago
follow-up: 3 comment:2 by , 4 years ago
I am not seeing any issue on Ubuntu but I can see your system is KDE based.
What is the config value for tabsbar_position
? Check with:
grep tabsbar_position ~/.config/deluge/*.conf > ~/.config/deluge/gtk3ui.conf: "tabsbar_position": 367,
Is the config value changing/updating when closing?
comment:3 by , 4 years ago
Replying to Cas:
I am not seeing any issue on Ubuntu but I can see your system is KDE based.
What is the config value for
tabsbar_position
? Check with:grep tabsbar_position ~/.config/deluge/*.conf > ~/.config/deluge/gtk3ui.conf: "tabsbar_position": 367,Is the config value changing/updating when closing?
On my system it is changing live and stays right when closing and even when opening, but the bottom panel still "resets". It seems to just not abide to that value.
follow-up: 6 comment:4 by , 4 years ago
Will need a lot more information to determine if this is a Deluge or GTK on KDE issue.
- What actual values are you seeing? Note the pixel values are the Torrent view height to the Tab bar.
- How do the value compare to the window size?
- Does the sidebar retain it's position? It is configured in the same way as the Tab bar
by , 4 years ago
Attachment: | test_paned.py added |
---|
comment:5 by , 4 years ago
I have attached a demo Gtk app with paned setup as per Deluge, can you test if this works. Run it from console with python3 test_paned.py
comment:6 by , 4 years ago
Replying to Cas:
Will need a lot more information to determine if this is a Deluge or GTK on KDE issue.
Keep in mind that this is *not* on KDE. I am a different person than the one that originally opened the issue. I am on Cinnamon which is much closer to Gnome than KDE.
- What actual values are you seeing? Note the pixel values are the Torrent view height to the Tab bar.
In my case the value makes sense in relation to the window and monitor resolution. "1086" is what would be ideal for me and I can set it to that as well.
- How do the value compare to the window size?
The value gets affected by the window size. Making the window very small lowers the value accordingly.
- Does the sidebar retain it's position? It is configured in the same way as the Tab bar
The sidebar *does* actually retain its position and doesn't seem affected by the same issue.
The test_paned.py demo app works fine. (Except for the side tab which doesn't seem implemented) Reopening the app retains the new tab bar position every time.
comment:7 by , 4 years ago
Update: Apparently the issue isn't 100% reliable. Right after doing that last test, I tried to see if it was related to the window being maximized. It seems to be related *somehow*.
When resizing the tab bar in a non-maximized window, it retains it position fine. If I then maximize the window again, restarting seems to walk the tab bar down in steps that seem to depend on the difference between the maximized and the non-maximized window.
Maybe Deluge is being started as a non-maximized window, then immediately maximized by the window manager and then over-compensates for being maximized? Just talking out of my ass here.
follow-up: 9 comment:8 by , 4 years ago
Milestone: | needs verified → 2.0.4 |
---|
Thanks for the updates, I think you are right that the maximizing of the window is having an effect here. I can replicate by maximizing the window, adjust the tab bar height then close and reopen Deluge to find the tab bar height at it's minimum.
I also notice that the maximized state is not stored correctly such that unmaximizing and closing restores it maximized. Retaining the window size and position is such a pain!
comment:9 by , 4 years ago
Replying to Cas:
I also notice that the maximized state is not stored correctly such that unmaximizing and closing restores it maximized.
In my case it seems to only store the unmaximization if the unmaximized window size is significantly smaller than the maximized size.
comment:10 by , 4 years ago
After narrowing down the problem, it is a Gtk bug specifically when restoring maximized application the paned tabbar position is reset. The related issue:
https://gitlab.gnome.org/GNOME/gtk/-/issues/1959
There might be a workaround for Deluge to implement but will need to look into it further
comment:13 by , 13 months ago
I made my own work around for this that works, but isn't pretty. I wanted to prevent position changes of tabsbar and sidebar from being saved until the window is visible and active. Once they are both true I set the initial positions for the tabsbar and sidebar and unlock those configuration values.
I noticed that the mainwindow.py visible() function is periodically called by something. So I modified that function to set a flag when the window becomes visible and active and set the positions of tabsbar and sidebar. When that flag is set and the tabsbar or the sidebar are moved the new positions can be written to the config file. I'm sure there is a better way to accomplish this.
Here are the changes that I made to mainwindow.py:
In class MainWindow: __init__() added self.visible_and_active = False first_show() added self.visible_and_active = False def visible(self): """Returns True if window is visible, False if not.""" if not self.visible_and_active and self.window.get_visible() and self.window.is_active(): self.visible_and_active = True self.sidebar_pane.set_position(self.config['sidebar_position']) self.tabsbar_pane.set_position(self.config['tabsbar_position']) return self.window.get_visible() def on_tabsbar_pane_position_event(self, obj, param): if (self.visible_and_active): self.config['tabsbar_position'] = self.tabsbar_pane.get_position() def on_sidebar_pane_position_event(self, obj, param): if (self.visible_and_active): self.config['sidebar_position'] = self.sidebar_pane.get_position()
Same issue here on Linux mint 19.3 with Cinnamon This is fairly new and hasn't been happening in the latest 1.x.x version.