Bug 68069

Summary: kwinmodule won't raise "windowAdded" signal for some windows (breaks the dockbar extension)
Product: [Plasma] kwin Reporter: julien pommier <hules>
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 julien pommier 2003-11-12 21:54:03 UTC
Version:            (using KDE KDE 3.1.93)
Installed from:    Compiled From Sources
OS:          Linux

The dockbar kicker extension uses the windowAdded signal from kwinmodule in order to embed "windowmaker" dock applets. But now (since kwin became netwm compliant?), some dockapps do not seem to trigger anymore this signal. For example, wmCalClock and wmtop do not.
Comment 1 Lubos Lunak 2003-11-20 17:26:22 UTC
Subject: kdebase/kwin

CVS commit by lunakl: 

Hmm, ok, I give up. Check only for IconicState in initial mapping state,
treat all the other strange states as NormalState. Fixes WMaker applets.
CCMAIL: 68069-done@bugs.kde.org


  M +8 -26     manage.cpp   2.19


--- kdebase/kwin/manage.cpp  #2.18:2.19
@@ -40,29 +40,4 @@ bool Client::manage( Window w, bool isMa
         return false;
 
-    // initial state
-    int init_mapping_state = NormalState;
-    XWMHints * hints = XGetWMHints(qt_xdisplay(), w );
-    if (hints && (hints->flags & StateHint))
-        init_mapping_state = hints->initial_state;
-    if (hints)
-        XFree(hints);
-    if( isMapped )
-        init_mapping_state = NormalState; // if it's already mapped, ignore hint
-
-    if( init_mapping_state != NormalState
-        && init_mapping_state != IconicState )
-        { // don't manage windows with strange initial mapping state
-      // it's mapped and unmapped for WindowMaker applets
-      // they usually map with initial_state == Withdrawn,
-      // and don't want to be mapped
-      // mapping it for a while will give the docking panel
-      // a chance to get MapNotify for it, and swallow the matching
-      // window
-      // SELI 
-        XMapWindow( qt_xdisplay(), w );
-        XUnmapWindow( qt_xdisplay(), w );
-        return false;
-        }
-
 //    XGrabServer( qt_xdisplay()); // FRAME
 
@@ -74,5 +49,12 @@ bool Client::manage( Window w, bool isMa
     // SELI order all these things in some sane manner
 
-    bool init_minimize = init_mapping_state == IconicState;
+    bool init_minimize = false;
+    XWMHints * hints = XGetWMHints(qt_xdisplay(), w );
+    if (hints && (hints->flags & StateHint) && hints->initial_state == IconicState)
+        init_minimize = true;
+    if (hints)
+        XFree(hints);
+    if( isMapped )
+        init_minimize = false; // if it's already mapped, ignore hint
 
     unsigned long properties[ 2 ];