(*** This bug was imported into bugs.kde.org ***) Package: kwm Version: unknown (using KDE 2.1.0 ) Severity: normal Installed from: SuSE Compiler: gcc version 2.95.2 19991024 (release) OS: Linux 2.2.14 i686 OS/Compiler notes: Same bug as reported by Giorgos Petasis: 1109-close at bugs.kde.org 1349-close at bugs.kde.org The bug still exists in KDE 2.1 Deiconifying a window is delayed 2 seconds. The following script illustrates this: it takes about 20 seconds to execute while it only takes a fraction of a second on all other windowmanagers that I have tried. Jeff Hobbs jeffh@activestate.com knows more. #!/usr/bin/wish regexp {^([1234567890])+} [time {raise .} 10] us puts "[expr $us * 10 / 1000000.0] seconds Tcl/Tk $tcl_patchLevel \ $tcl_platform(os) $tcl_platform(osVersion) $tcl_platform(machine) \ $tcl_platform(platform)" exit (Submitted via bugs.kde.org) (Called from KBugReport dialog)
Here's the cause of the problem: According to the ICCCM [section 4.1.5 "Configuring the Window"] window managers should respond with a ConfigureNotify whenever the client makes a ConfigureRequest to change the position size border width *or stacking order* (regardless of whether the change is actually carried out). Tk currently waits for a ConfigureNotify whenever it raises or lowers a window but KWIN is only sending synthetic ConfigureNotify's for position and size changes. See <URL: http://purl.org/tcl/tip/107.html > for a full description of the problem from Tk's end. This will (hopefully) be fixed in Tk 8.4. On the KWIN side the following patch should fix the problem for earlier Tcl/Tk releases: -- Cut here -- Index: kwin/client.cpp =================================================================== RCS file: /home/kde/kdebase/kwin/client.cppv retrieving revision 1.304 diff -u -r1.304 client.cpp --- kwin/client.cpp25 Aug 2002 01:04:42 -00001.304 +++ kwin/client.cpp30 Aug 2002 01:46:03 -0000 @@ -12797 +12797 @@ } } - if ( e.value_mask & (CWX | CWY | CWWidth | CWHeight ) ) + if ( e.value_mask & (CWX | CWY | CWWidth | CWHeight | CWStackMode ) ) sendSyntheticConfigureNotify(); return TRUE; } -- Cut here -- Hm... or maybe a better approach is to remove the 'if (e.value_mask & ...' qualifier altogether since the only other relevant flags are CWSibling (which implies CWStackMode) and CWBorderWidth (and you're supposed to send ConfigureNotify's for those too.) --Joe English jenglish@flightlab.com
*** Bug 28857 has been marked as a duplicate of this bug. ***
I have removed the if() , so I consider this bug fixed. A bit late, but still.