diff options
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r-- | src/fluxbox.cc | 57 |
1 files changed, 55 insertions, 2 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 5bf54bc..dd371ee 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: fluxbox.cc,v 1.173 2003/07/21 15:26:57 rathnor Exp $ | 25 | // $Id: fluxbox.cc,v 1.174 2003/07/23 10:43:30 fluxgen Exp $ |
26 | 26 | ||
27 | #include "fluxbox.hh" | 27 | #include "fluxbox.hh" |
28 | 28 | ||
@@ -423,7 +423,14 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile | |||
423 | m_server_grabs(0), | 423 | m_server_grabs(0), |
424 | m_randr_event_type(0), | 424 | m_randr_event_type(0), |
425 | m_RC_PATH("fluxbox"), | 425 | m_RC_PATH("fluxbox"), |
426 | m_RC_INIT_FILE("init") { | 426 | m_RC_INIT_FILE("init"), |
427 | // For KDE dock applets | ||
428 | // KDE v1.x | ||
429 | m_kwm1_dockwindow(XInternAtom(FbTk::App::instance()->display(), | ||
430 | "KWM_DOCKWINDOW", False)), | ||
431 | // KDE v2.x | ||
432 | m_kwm2_dockwindow(XInternAtom(FbTk::App::instance()->display(), | ||
433 | "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", False)) { | ||
427 | 434 | ||
428 | 435 | ||
429 | if (s_singleton != 0) | 436 | if (s_singleton != 0) |
@@ -780,6 +787,52 @@ void Fluxbox::handleEvent(XEvent * const e) { | |||
780 | } | 787 | } |
781 | break; | 788 | break; |
782 | case MapRequest: { | 789 | case MapRequest: { |
790 | #ifdef SLIT | ||
791 | #ifdef KDE | ||
792 | //Check and see if client is KDE dock applet. | ||
793 | //If so add to Slit | ||
794 | bool iskdedockapp = false; | ||
795 | Atom ajunk; | ||
796 | int ijunk; | ||
797 | unsigned long *data = (unsigned long *) 0, uljunk; | ||
798 | Display *disp = FbTk::App::instance()->display(); | ||
799 | // Check if KDE v2.x dock applet | ||
800 | if (XGetWindowProperty(disp, e->xmaprequest.window, | ||
801 | m_kwm2_dockwindow, 0l, 1l, False, | ||
802 | XA_WINDOW, &ajunk, &ijunk, &uljunk, | ||
803 | &uljunk, (unsigned char **) &data) == Success) { | ||
804 | |||
805 | if (data) | ||
806 | iskdedockapp = True; | ||
807 | XFree((void *) data); | ||
808 | data = 0; | ||
809 | } | ||
810 | |||
811 | // Check if KDE v1.x dock applet | ||
812 | if (!iskdedockapp) { | ||
813 | if (XGetWindowProperty(disp, e->xmaprequest.window, | ||
814 | m_kwm1_dockwindow, 0l, 1l, False, | ||
815 | m_kwm1_dockwindow, &ajunk, &ijunk, &uljunk, | ||
816 | &uljunk, (unsigned char **) &data) == Success && data) { | ||
817 | iskdedockapp = (data && data[0] != 0); | ||
818 | XFree((void *) data); | ||
819 | data = 0; | ||
820 | } | ||
821 | } | ||
822 | |||
823 | if (iskdedockapp) { | ||
824 | XSelectInput(disp, e->xmaprequest.window, StructureNotifyMask); | ||
825 | ScreenList::iterator it = m_screen_list.begin(); | ||
826 | for (; (*it) == m_screen_list.back(); ++it) { | ||
827 | if ((*it)->slit()) | ||
828 | (*it)->slit()->addClient(e->xmaprequest.window); | ||
829 | } | ||
830 | |||
831 | return; // dont create a FluxboxWindow for this one | ||
832 | } | ||
833 | #endif // KDE | ||
834 | #endif // SLIT | ||
835 | |||
783 | #ifdef DEBUG | 836 | #ifdef DEBUG |
784 | cerr<<"MapRequest for 0x"<<hex<<e->xmaprequest.window<<dec<<endl; | 837 | cerr<<"MapRequest for 0x"<<hex<<e->xmaprequest.window<<dec<<endl; |
785 | #endif // DEBUG | 838 | #endif // DEBUG |