GNOME Bugzilla – Bug 563646
Switching resolution can cause all applets to become right stuck
Last modified: 2008-12-08 12:28:28 UTC
+++ This bug was initially created as a clone of Bug #314235 +++ (upgraded Gnome version to 2.22.x) Same issue with openSUSE 11.0 (Gnome 2.22.1). How to reproduce problem: 0/ Add applets to panel 1/ Run any Wine application in fullscreen mode when its resolution differs from desktop resolution, then leave application 2/ Applets (all but the leftmost one) are randomly distributed on panel, only leftmost one stays in right position From fedora: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=165748 the order of the objects on the Gnome panel gets mixed up after switching from resolution 1600x1200 to resolution 1024x768 and to 1600x1200. Screenshot before: https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=117887 Screenshot after: https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=117888 I should probably mention that in the sequence documented above, I did absolutely nothing, except switching resolution and do what you asked me to. Nothing was done to the panel while in 1024x768. From looking at the configuration dumps attached to the bug you can see that the config changed along the lines of: @@ -16,11 +16,11 @@ launcher_location = gegl-00b540bf94.desktop tooltip = use_menu_path = false - panel_right_stick = false + panel_right_stick = true locked = false menu_path = applications:/ object_type = launcher-object - position = 380 + position = 6 /tmp/t2/objects/object_0: toplevel_id = panel_0 action_type = force-quit @@ -31,11 +31,11 @@ launcher_location = tooltip = use_menu_path = false - panel_right_stick = false + panel_right_stick = true locked = false menu_path = applications:/ object_type = action-applet - position = 538 + position = 4 /tmp/t2/objects/menu_bar: toplevel_id = top_panel action_type = lock i.e. all the applets became right stuck. Basically, what we need to ensure is that we never change an applets GConf config unless the user explicitly moves it. In panel-widget.c we try to do this by storing the configured position in AppletData::pos and the actual position in AppletData::constrained_pos - so if the resolution changes, I'd expect to see all applet's AppletData::pos remain the same, but the AppletData::constrained_pos would reflect the actual position on the panel. It looks like the problem might be in panel_widget_right_stick() - when the panel width (for horizontal panels) changes, we call this function and it changes AppletData::constrained_pos, which will later get saved to GConf. There shouldn't be any need for this - panel_widget_right_stick() should only change AppletData::pos, I reckon
Please don't clone a bug for the same product. *** This bug has been marked as a duplicate of 314235 ***