all repos — fluxbox @ cc062647d04ced5cc825cda04f77b27eaa1917d0

custom fork of the fluxbox windowmanager

fixed kde dockapp bug
fluxgen fluxgen
commit

cc062647d04ced5cc825cda04f77b27eaa1917d0

parent

906a6b239589af29624bca151172c5e6a436bfc8

3 files changed, 58 insertions(+), 43 deletions(-)

jump to
M src/Slit.ccsrc/Slit.cc

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Slit.cc,v 1.73 2003/07/19 11:55:49 rathnor Exp $ +// $Id: Slit.cc,v 1.74 2003/07/23 10:42:12 fluxgen Exp $ #include "Slit.hh"

@@ -969,45 +969,6 @@ } else if (event.type == DestroyNotify) {

removeClient(event.xdestroywindow.window, false); } else if (event.type == UnmapNotify) { removeClient(event.xunmap.window); - } else if (event.type == MapRequest) { -#ifdef KDE - //Check and see if client is KDE dock applet. - //If so add to Slit - bool iskdedockapp = false; - Atom ajunk; - int ijunk; - unsigned long *data = (unsigned long *) 0, uljunk; - Display *disp = FbTk::App::instance()->display(); - // Check if KDE v2.x dock applet - if (XGetWindowProperty(disp, event.xmaprequest.window, - m_kwm2_dockwindow, 0l, 1l, False, - XA_WINDOW, &ajunk, &ijunk, &uljunk, - &uljunk, (unsigned char **) &data) == Success) { - - if (data) - iskdedockapp = True; - XFree((void *) data); - data = 0; - } - - // Check if KDE v1.x dock applet - if (!iskdedockapp) { - if (XGetWindowProperty(disp, event.xmaprequest.window, - m_kwm1_dockwindow, 0l, 1l, False, - m_kwm1_dockwindow, &ajunk, &ijunk, &uljunk, - &uljunk, (unsigned char **) &data) == Success && data) { - iskdedockapp = (data && data[0] != 0); - XFree((void *) data); - data = 0; - } - } - - if (iskdedockapp) { - XSelectInput(disp, event.xmaprequest.window, StructureNotifyMask); - addClient(event.xmaprequest.window); - } -#endif //KDE - } }
M src/fluxbox.ccsrc/fluxbox.cc

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: fluxbox.cc,v 1.173 2003/07/21 15:26:57 rathnor Exp $ +// $Id: fluxbox.cc,v 1.174 2003/07/23 10:43:30 fluxgen Exp $ #include "fluxbox.hh"

@@ -423,7 +423,14 @@ m_shutdown(false),

m_server_grabs(0), m_randr_event_type(0), m_RC_PATH("fluxbox"), - m_RC_INIT_FILE("init") { + m_RC_INIT_FILE("init"), + // For KDE dock applets + // KDE v1.x + m_kwm1_dockwindow(XInternAtom(FbTk::App::instance()->display(), + "KWM_DOCKWINDOW", False)), + // KDE v2.x + m_kwm2_dockwindow(XInternAtom(FbTk::App::instance()->display(), + "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", False)) { if (s_singleton != 0)

@@ -780,6 +787,52 @@

} break; case MapRequest: { +#ifdef SLIT +#ifdef KDE + //Check and see if client is KDE dock applet. + //If so add to Slit + bool iskdedockapp = false; + Atom ajunk; + int ijunk; + unsigned long *data = (unsigned long *) 0, uljunk; + Display *disp = FbTk::App::instance()->display(); + // Check if KDE v2.x dock applet + if (XGetWindowProperty(disp, e->xmaprequest.window, + m_kwm2_dockwindow, 0l, 1l, False, + XA_WINDOW, &ajunk, &ijunk, &uljunk, + &uljunk, (unsigned char **) &data) == Success) { + + if (data) + iskdedockapp = True; + XFree((void *) data); + data = 0; + } + + // Check if KDE v1.x dock applet + if (!iskdedockapp) { + if (XGetWindowProperty(disp, e->xmaprequest.window, + m_kwm1_dockwindow, 0l, 1l, False, + m_kwm1_dockwindow, &ajunk, &ijunk, &uljunk, + &uljunk, (unsigned char **) &data) == Success && data) { + iskdedockapp = (data && data[0] != 0); + XFree((void *) data); + data = 0; + } + } + + if (iskdedockapp) { + XSelectInput(disp, e->xmaprequest.window, StructureNotifyMask); + ScreenList::iterator it = m_screen_list.begin(); + for (; (*it) == m_screen_list.back(); ++it) { + if ((*it)->slit()) + (*it)->slit()->addClient(e->xmaprequest.window); + } + + return; // dont create a FluxboxWindow for this one + } +#endif // KDE +#endif // SLIT + #ifdef DEBUG cerr<<"MapRequest for 0x"<<hex<<e->xmaprequest.window<<dec<<endl; #endif // DEBUG
M src/fluxbox.hhsrc/fluxbox.hh

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: fluxbox.hh,v 1.67 2003/07/19 13:51:24 rathnor Exp $ +// $Id: fluxbox.hh,v 1.68 2003/07/23 10:43:30 fluxgen Exp $ #ifndef FLUXBOX_HH #define FLUXBOX_HH

@@ -281,6 +281,7 @@ int m_shape_eventbase; ///< event base for shape events

bool m_have_shape; ///< if shape is supported by server const char *m_RC_PATH; const char *m_RC_INIT_FILE; + Atom m_kwm1_dockwindow, m_kwm2_dockwindow; };