Bug 75167 - kwin misplaces tk's popup menues
Summary: kwin misplaces tk's popup menues
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-02-13 17:39 UTC by Oswald Buddenhagen
Modified: 2005-10-20 14:58 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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();
         }
     }