Bug 75167

Summary: kwin misplaces tk's popup menues
Product: [Plasma] kwin Reporter: Oswald Buddenhagen <ossi>
Component: generalAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description Oswald Buddenhagen 2004-02-13 17:39:59 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources

when i open a menu from the menu bar of a tk application, the menu pops up on top of the bar, not right below it. that's especially annoying when using the mouse, as the menu pops up right under the mouse, selecting the first item when the mouse button is released (usually "only" the tear-off handle, but that's annoying enough).
submenus seem to be positioned correctly.
around 3.2 release time everything was still ok, after that the menus were placed without any relation to the application window, and now the behavior described above applies.
Comment 1 Lubos Lunak 2004-02-13 18:30:03 UTC
CVS commit by lunakl: 

Revert r2.51. Tk is either too stupid to see a difference between normal
and synthetic configure events, or it's too paranoid to trust the normal
ones.
CCMAIL: 75167-done@bugs.kde.org


  M +2 -4      geometry.cpp   2.54


--- kdebase/kwin/geometry.cpp  #2.53:2.54
@@ -1150,6 +1150,4 @@ void Client::setGeometry( int x, int y, 
             // FRAME tady poradi tak, at neni flicker
             XMoveResizeWindow( qt_xdisplay(), window(), 0, 0, cs.width(), cs.height());
-            // no need for real configure notify, XMoveResizeWindow() already causes real one
-            // sendSyntheticConfigureNotify(); 
             }
         if( shape())
@@ -1157,4 +1155,5 @@ void Client::setGeometry( int x, int y, 
         // SELI TODO won't this be too expensive?
         updateWorkareaDiffs();
+        sendSyntheticConfigureNotify();
         }
     }
@@ -1189,10 +1188,9 @@ void Client::plainResize( int w, int h, 
                 cs.width(), cs.height());
             XMoveResizeWindow( qt_xdisplay(), window(), 0, 0, cs.width(), cs.height());
-            // no need for real configure notify, XMoveResizeWindow() already causes real one
-            // sendSyntheticConfigureNotify(); 
             }
         if( shape())
             updateShape();
         updateWorkareaDiffs();
+        sendSyntheticConfigureNotify();
         }
     }