From f423bdc3a4d8c8f70b6b4b6efba9974fd07ccb12 Mon Sep 17 00:00:00 2001 From: fluxgen <fluxgen> Date: Sun, 12 Jan 2003 18:11:12 +0000 Subject: moved slit handling over to Slit.cc and temporarly disabled slit save/load resources --- src/fluxbox.cc | 346 +++++++++++++++++++-------------------------------------- 1 file changed, 112 insertions(+), 234 deletions(-) diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 27ee143..d0a1b69 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc @@ -22,7 +22,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: fluxbox.cc,v 1.90 2003/01/10 00:44:17 fluxgen Exp $ +// $Id: fluxbox.cc,v 1.91 2003/01/12 18:11:12 fluxgen Exp $ #include "fluxbox.hh" @@ -366,14 +366,6 @@ Fluxbox::Fluxbox(int m_argc, char **m_argv, const char *dpy_name, const char *rc masked = None; -#ifdef SLIT -#ifdef KDE - //For KDE dock applets - kwm1_dockwindow = XInternAtom(getXDisplay(), "KWM_DOCKWINDOW", False); //KDE v1.x - kwm2_dockwindow = XInternAtom(getXDisplay(), "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", False); //KDE v2.x -#endif //KDE - -#endif // SLIT #ifdef HAVE_GETPID fluxbox_pid = XInternAtom(getXDisplay(), "_BLACKBOX_PID", False); @@ -576,19 +568,10 @@ void Fluxbox::handleEvent(XEvent * const e) { { FluxboxWindow *win = (FluxboxWindow *) 0; -#ifdef SLIT - Slit *slit = (Slit *) 0; -#endif // SLIT - if ((win = searchWindow(e->xconfigurerequest.window))) { win->configureRequestEvent(e->xconfigurerequest); -#ifdef SLIT - } else if ((slit = searchSlit(e->xconfigurerequest.window))) { - slit->configureRequestEvent(&e->xconfigurerequest); -#endif // SLIT - - } else { + } else { grab(); if (validateWindow(e->xconfigurerequest.window)) { @@ -615,50 +598,7 @@ void Fluxbox::handleEvent(XEvent * const e) { #ifdef DEBUG cerr<<"MapRequest for 0x"<<hex<<e->xmaprequest.window<<dec<<endl; #endif // DEBUG - -#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; - - // Check if KDE v2.x dock applet - if (XGetWindowProperty(getXDisplay(), e->xmaprequest.window, - getKWM2DockwindowAtom(), 0l, 1l, False, - XA_WINDOW, &ajunk, &ijunk, &uljunk, - &uljunk, (unsigned char **) &data) == Success) { - - if (data) - iskdedockapp = True; - XFree((char *) data); - - } - - // Check if KDE v1.x dock applet - if (!iskdedockapp) { - if (XGetWindowProperty(getXDisplay(), e->xmaprequest.window, - getKWM1DockwindowAtom(), 0l, 1l, False, - getKWM1DockwindowAtom(), &ajunk, &ijunk, &uljunk, - &uljunk, (unsigned char **) &data) == Success) { - iskdedockapp = (data && data[0] != 0); - XFree((char *) data); - } - } - if (iskdedockapp) { - XSelectInput(getXDisplay(), e->xmaprequest.window, StructureNotifyMask); - ScreenList::iterator it = screenList.begin(); - for (; (*it) == screenList.back(); ++it) { - (*it)->getSlit()->addClient(e->xmaprequest.window); - } - return; - } -#endif //KDE -#endif // SLIT - FluxboxWindow *win = searchWindow(e->xmaprequest.window); if (! win) { @@ -692,23 +632,13 @@ void Fluxbox::handleEvent(XEvent * const e) { case CreateNotify: break; case DestroyNotify: { - FluxboxWindow *win = (FluxboxWindow *) 0; - -#ifdef SLIT - Slit *slit = 0; -#endif // SLIT + FluxboxWindow *win = 0; if ((win = searchWindow(e->xdestroywindow.window)) && win->getClientWindow() == e->xdestroywindow.window) { win->destroyNotifyEvent(e->xdestroywindow); removeWindowSearch(win->getClientWindow()); delete win; } -#ifdef SLIT - else if ((slit = searchSlit(e->xdestroywindow.window))) { - slit->removeClient(e->xdestroywindow.window, false); - - } -#endif // SLIT } break; @@ -744,9 +674,6 @@ void Fluxbox::handleEvent(XEvent * const e) { BScreen *screen = 0; FluxboxWindow *win = 0; Tab *tab = 0; -#ifdef SLIT - Slit *slit = 0; -#endif // SLIT if (e->xcrossing.mode == NotifyGrab) break; @@ -788,10 +715,6 @@ void Fluxbox::handleEvent(XEvent * const e) { ungrab(); } } -#ifdef SLIT - else if ((slit = searchSlit(e->xcrossing.window))) - slit->enterNotifyEvent(&e->xcrossing); -#endif // SLIT } break; @@ -801,15 +724,8 @@ void Fluxbox::handleEvent(XEvent * const e) { FluxboxWindow *win = (FluxboxWindow *) 0; -#ifdef SLIT - Slit *slit = (Slit *) 0; -#endif // SLIT if ((win = searchWindow(e->xcrossing.window))) win->installColormap(false); -#ifdef SLIT - else if ((slit = searchSlit(e->xcrossing.window))) - slit->leaveNotifyEvent(&e->xcrossing); -#endif // SLIT } break; @@ -875,9 +791,6 @@ void Fluxbox::handleButtonEvent(XButtonEvent &be) { FluxboxWindow *win = 0; Tab *tab = 0; -#ifdef SLIT - Slit *slit = (Slit *) 0; -#endif // SLIT if ((win = searchWindow(be.window))) { @@ -886,11 +799,6 @@ void Fluxbox::handleButtonEvent(XButtonEvent &be) { if (be.button == 1) win->installColormap(True); } -#ifdef SLIT - else if ((slit = searchSlit(be.window))) { - slit->buttonPressEvent(&be); - } -#endif // SLIT else if ((tab = searchTab(be.window))) { tab->buttonPressEvent(&be); } else { @@ -1002,9 +910,6 @@ void Fluxbox::handleUnmapNotify(XUnmapEvent &ue) { FluxboxWindow *win = 0; -#ifdef SLIT - Slit *slit = (Slit *) 0; -#endif // SLIT BScreen *screen = searchScreen(ue.event); if ( (ue.event != ue.window) && (screen != 0 || !ue.send_event)) @@ -1022,11 +927,6 @@ void Fluxbox::handleUnmapNotify(XUnmapEvent &ue) { } } -#ifdef SLIT - else if ((slit = searchSlit(ue.window))!=0) { - slit->removeClient(ue.window); - } -#endif // SLIT } @@ -1658,15 +1558,6 @@ Tab *Fluxbox::searchTab(Window window) { return it == tabSearch.end() ? 0 : it->second; } - -#ifdef SLIT -Slit *Fluxbox::searchSlit(Window window) { - std::map<Window, Slit *>::iterator it = slitSearch.find(window); - return it == slitSearch.end() ? 0 : it->second; -} -#endif // SLIT - - void Fluxbox::saveWindowSearch(Window window, FluxboxWindow *data) { windowSearch[window] = data; } @@ -1680,13 +1571,6 @@ void Fluxbox::saveTabSearch(Window window, Tab *data) { tabSearch[window] = data; } -#ifdef SLIT -void Fluxbox::saveSlitSearch(Window window, Slit *data) { - slitSearch[window] = data; -} -#endif // SLIT - - void Fluxbox::removeWindowSearch(Window window) { windowSearch.erase(window); } @@ -1700,13 +1584,6 @@ void Fluxbox::removeTabSearch(Window window) { tabSearch.erase(window); } -#ifdef SLIT -void Fluxbox::removeSlitSearch(Window window) { - slitSearch.erase(window); -} -#endif // SLIT - - void Fluxbox::restart(const char *prog) { shutdown(); @@ -1773,46 +1650,46 @@ void Fluxbox::save_rc() { for (; it != it_end; ++it) { BScreen *screen = *it; int screen_number = screen->getScreenNumber(); + /* + #ifdef SLIT + string slit_placement; + + switch (screen->getSlitPlacement()) { + case Slit::TOPLEFT: slit_placement = "TopLeft"; break; + case Slit::CENTERLEFT: slit_placement = "CenterLeft"; break; + case Slit::BOTTOMLEFT: slit_placement = "BottomLeft"; break; + case Slit::TOPCENTER: slit_placement = "TopCenter"; break; + case Slit::BOTTOMCENTER: slit_placement = "BottomCenter"; break; + case Slit::TOPRIGHT: slit_placement = "TopRight"; break; + case Slit::BOTTOMRIGHT: slit_placement = "BottomRight"; break; + case Slit::CENTERRIGHT: default: slit_placement = "CenterRight"; break; + } -#ifdef SLIT - string slit_placement; - - switch (screen->getSlitPlacement()) { - case Slit::TOPLEFT: slit_placement = "TopLeft"; break; - case Slit::CENTERLEFT: slit_placement = "CenterLeft"; break; - case Slit::BOTTOMLEFT: slit_placement = "BottomLeft"; break; - case Slit::TOPCENTER: slit_placement = "TopCenter"; break; - case Slit::BOTTOMCENTER: slit_placement = "BottomCenter"; break; - case Slit::TOPRIGHT: slit_placement = "TopRight"; break; - case Slit::BOTTOMRIGHT: slit_placement = "BottomRight"; break; - case Slit::CENTERRIGHT: default: slit_placement = "CenterRight"; break; - } - - sprintf(rc_string, "session.screen%d.slit.placement: %s", screen_number, - slit_placement.c_str()); - XrmPutLineResource(&new_blackboxrc, rc_string); - - sprintf(rc_string, "session.screen%d.slit.direction: %s", screen_number, - ((screen->getSlitDirection() == Slit::HORIZONTAL) ? "Horizontal" : - "Vertical")); - XrmPutLineResource(&new_blackboxrc, rc_string); + sprintf(rc_string, "session.screen%d.slit.placement: %s", screen_number, + slit_placement.c_str()); + XrmPutLineResource(&new_blackboxrc, rc_string); - sprintf(rc_string, "session.screen%d.slit.onTop: %s", screen_number, - ((screen->getSlit()->isOnTop()) ? "True" : "False")); - XrmPutLineResource(&new_blackboxrc, rc_string); + sprintf(rc_string, "session.screen%d.slit.direction: %s", screen_number, + ((screen->getSlitDirection() == Slit::HORIZONTAL) ? "Horizontal" : + "Vertical")); + XrmPutLineResource(&new_blackboxrc, rc_string); - sprintf(rc_string, "session.screen%d.slit.autoHide: %s", screen_number, - ((screen->getSlit()->doAutoHide()) ? "True" : "False")); - XrmPutLineResource(&new_blackboxrc, rc_string); + sprintf(rc_string, "session.screen%d.slit.onTop: %s", screen_number, + ((screen->getSlit()->isOnTop()) ? "True" : "False")); + XrmPutLineResource(&new_blackboxrc, rc_string); -#ifdef XINERAMA - sprintf(rc_string, "session.screen%d.slit.onHead: %d", screen_number, - screen->getSlitOnHead()); - XrmPutLineResource(&new_blackboxrc, rc_string); -#endif // XINERAMA + sprintf(rc_string, "session.screen%d.slit.autoHide: %s", screen_number, + ((screen->getSlit()->doAutoHide()) ? "True" : "False")); + XrmPutLineResource(&new_blackboxrc, rc_string); -#endif // SLIT + #ifdef XINERAMA + sprintf(rc_string, "session.screen%d.slit.onHead: %d", screen_number, + screen->getSlitOnHead()); + XrmPutLineResource(&new_blackboxrc, rc_string); + #endif // XINERAMA + #endif // SLIT + */ sprintf(rc_string, "session.screen%d.rowPlacementDirection: %s", screen_number, ((screen->getRowPlacementDirection() == BScreen::LEFTRIGHT) ? "LeftToRight" : "RightToLeft")); @@ -1860,7 +1737,7 @@ void Fluxbox::save_rc() { focus_mode.c_str()); XrmPutLineResource(&new_blackboxrc, rc_string); -// load_rc(screen); + // load_rc(screen); // these are static, but may not be saved in the users resource file, // writing these resources will allow the user to edit them at a later // time... but loading the defaults before saving allows us to rewrite the @@ -1933,6 +1810,7 @@ void Fluxbox::load_rc() { //get resource filename string dbfile(getRcFilename()); + if (dbfile.size() != 0) { if (!m_resourcemanager.load(dbfile.c_str())) { cerr<<"Faild to load database:"<<dbfile<<endl; @@ -2132,79 +2010,79 @@ void Fluxbox::load_rc(BScreen *screen) { screen->savePlacementPolicy(BScreen::CASCADEPLACEMENT); } else screen->savePlacementPolicy(BScreen::ROWSMARTPLACEMENT); - -#ifdef SLIT - sprintf(name_lookup, "session.screen%d.slit.placement", screen_number); - sprintf(class_lookup, "Session.Screen%d.Slit.Placement", screen_number); - if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, - &value)) { - if (! strncasecmp(value.addr, "TopLeft", value.size)) - screen->saveSlitPlacement(Slit::TOPLEFT); - else if (! strncasecmp(value.addr, "CenterLeft", value.size)) - screen->saveSlitPlacement(Slit::CENTERLEFT); - else if (! strncasecmp(value.addr, "BottomLeft", value.size)) - screen->saveSlitPlacement(Slit::BOTTOMLEFT); - else if (! strncasecmp(value.addr, "TopCenter", value.size)) - screen->saveSlitPlacement(Slit::TOPCENTER); - else if (! strncasecmp(value.addr, "BottomCenter", value.size)) - screen->saveSlitPlacement(Slit::BOTTOMCENTER); - else if (! strncasecmp(value.addr, "TopRight", value.size)) - screen->saveSlitPlacement(Slit::TOPRIGHT); - else if (! strncasecmp(value.addr, "BottomRight", value.size)) - screen->saveSlitPlacement(Slit::BOTTOMRIGHT); - else - screen->saveSlitPlacement(Slit::CENTERRIGHT); - } else - screen->saveSlitPlacement(Slit::CENTERRIGHT); - - sprintf(name_lookup, "session.screen%d.slit.direction", screen_number); - sprintf(class_lookup, "Session.Screen%d.Slit.Direction", screen_number); - if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, - &value)) { - if (! strncasecmp(value.addr, "Horizontal", value.size)) - screen->saveSlitDirection(Slit::HORIZONTAL); - else - screen->saveSlitDirection(Slit::VERTICAL); - } else - screen->saveSlitDirection(Slit::VERTICAL); - - sprintf(name_lookup, "session.screen%d.slit.onTop", screen_number); - sprintf(class_lookup, "Session.Screen%d.Slit.OnTop", screen_number); - if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, - &value)) { - if (! strncasecmp(value.addr, "True", value.size)) - screen->saveSlitOnTop(True); - else - screen->saveSlitOnTop(False); - } else - screen->saveSlitOnTop(False); - - sprintf(name_lookup, "session.screen%d.slit.autoHide", screen_number); - sprintf(class_lookup, "Session.Screen%d.Slit.AutoHide", screen_number); - if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, - &value)) { - if (! strncasecmp(value.addr, "True", value.size)) - screen->saveSlitAutoHide(True); - else - screen->saveSlitAutoHide(False); - } else - screen->saveSlitAutoHide(False); - -#ifdef XINERAMA - int tmp_head; - sprintf(name_lookup, "session.screen%d.slit.onHead", screen_number); - sprintf(class_lookup, "Session.Screen%d.Slit.OnHead", screen_number); - if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, - &value)) { - if (sscanf(value.addr, "%d", &tmp_head) != 1) - tmp_head = 0; - } else - tmp_head = 0; - screen->saveSlitOnHead(tmp_head); -#endif // XINERAMA - -#endif // SLIT - + /* + #ifdef SLIT + sprintf(name_lookup, "session.screen%d.slit.placement", screen_number); + sprintf(class_lookup, "Session.Screen%d.Slit.Placement", screen_number); + if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, + &value)) { + if (! strncasecmp(value.addr, "TopLeft", value.size)) + screen->saveSlitPlacement(Slit::TOPLEFT); + else if (! strncasecmp(value.addr, "CenterLeft", value.size)) + screen->saveSlitPlacement(Slit::CENTERLEFT); + else if (! strncasecmp(value.addr, "BottomLeft", value.size)) + screen->saveSlitPlacement(Slit::BOTTOMLEFT); + else if (! strncasecmp(value.addr, "TopCenter", value.size)) + screen->saveSlitPlacement(Slit::TOPCENTER); + else if (! strncasecmp(value.addr, "BottomCenter", value.size)) + screen->saveSlitPlacement(Slit::BOTTOMCENTER); + else if (! strncasecmp(value.addr, "TopRight", value.size)) + screen->saveSlitPlacement(Slit::TOPRIGHT); + else if (! strncasecmp(value.addr, "BottomRight", value.size)) + screen->saveSlitPlacement(Slit::BOTTOMRIGHT); + else + screen->saveSlitPlacement(Slit::CENTERRIGHT); + } else + screen->saveSlitPlacement(Slit::CENTERRIGHT); + + sprintf(name_lookup, "session.screen%d.slit.direction", screen_number); + sprintf(class_lookup, "Session.Screen%d.Slit.Direction", screen_number); + if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, + &value)) { + if (! strncasecmp(value.addr, "Horizontal", value.size)) + screen->saveSlitDirection(Slit::HORIZONTAL); + else + screen->saveSlitDirection(Slit::VERTICAL); + } else + screen->saveSlitDirection(Slit::VERTICAL); + + sprintf(name_lookup, "session.screen%d.slit.onTop", screen_number); + sprintf(class_lookup, "Session.Screen%d.Slit.OnTop", screen_number); + if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, + &value)) { + if (! strncasecmp(value.addr, "True", value.size)) + screen->saveSlitOnTop(True); + else + screen->saveSlitOnTop(False); + } else + screen->saveSlitOnTop(False); + + sprintf(name_lookup, "session.screen%d.slit.autoHide", screen_number); + sprintf(class_lookup, "Session.Screen%d.Slit.AutoHide", screen_number); + if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, + &value)) { + if (! strncasecmp(value.addr, "True", value.size)) + screen->saveSlitAutoHide(True); + else + screen->saveSlitAutoHide(False); + } else + screen->saveSlitAutoHide(False); + + #ifdef XINERAMA + int tmp_head; + sprintf(name_lookup, "session.screen%d.slit.onHead", screen_number); + sprintf(class_lookup, "Session.Screen%d.Slit.OnHead", screen_number); + if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, + &value)) { + if (sscanf(value.addr, "%d", &tmp_head) != 1) + tmp_head = 0; + } else + tmp_head = 0; + screen->saveSlitOnHead(tmp_head); + #endif // XINERAMA + + #endif // SLIT + */ #ifdef HAVE_STRFTIME sprintf(name_lookup, "session.screen%d.strftimeFormat", screen_number); sprintf(class_lookup, "Session.Screen%d.StrftimeFormat", screen_number); -- cgit v0.11.2