X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FConfigmenu.cc;h=8a15b4e119ad900408692a211883bf735a8382bc;hb=d2ab586410c9919f0b2e5b84f3447ff29617c5b1;hp=e73ae327ba5999123944646c919494f4b3f42f8b;hpb=7972a75e4615da9a62e6be8c44880f5a594a2519;p=chaz%2Fopenbox diff --git a/src/Configmenu.cc b/src/Configmenu.cc index e73ae327..8a15b4e1 100644 --- a/src/Configmenu.cc +++ b/src/Configmenu.cc @@ -38,52 +38,73 @@ Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) { focusmenu = new Focusmenu(this); placementmenu = new Placementmenu(this); +#ifdef XINERAMA + xineramamenu = new Xineramamenu(this); +#endif // XINERAMA insert(i18n(ConfigmenuSet, ConfigmenuFocusModel, "Focus Model"), focusmenu); insert(i18n(ConfigmenuSet, ConfigmenuWindowPlacement, "Window Placement"), placementmenu); +#ifdef XINERAMA + insert(i18n(ConfigmenuSet, ConfigmenuXineramaSupport, + "XineramaSupport"), xineramamenu); +#endif // XINERAMA insert(i18n(ConfigmenuSet, ConfigmenuImageDithering, "Image Dithering"), 1); insert(i18n(ConfigmenuSet, ConfigmenuOpaqueMove, "Opaque Window Moving"), 2); + insert(i18n(ConfigmenuSet, ConfigmenuWorkspaceWarping, + "Workspace Warping"), 3); insert(i18n(ConfigmenuSet, ConfigmenuFullMax, - "Full Maximization"), 3); + "Full Maximization"), 4); insert(i18n(ConfigmenuSet, ConfigmenuFocusNew, - "Focus New Windows"), 4); + "Focus New Windows"), 5); insert(i18n(ConfigmenuSet, ConfigmenuFocusLast, - "Focus Last Window on Workspace"), 5); + "Focus Last Window on Workspace"), 6); insert(i18n(ConfigmenuSet, ConfigmenuWindowToWindowSnap, - "Window-To-Window Snapping"), 6); + "Window-To-Window Snapping"), 7); insert(i18n(ConfigmenuSet, ConfigmenuWindowCornerSnap, - "Window Corner Snapping"), 7); + "Window Corner Snapping"), 8); + insert(i18n(ConfigmenuSet, ConfigmenuDisableBindings, + "Disable Mouse with Scroll Lock"), 9); insert(i18n(ConfigmenuSet, ConfigmenuHideToolbar, - "Hide Toolbar"), 8); + "Hide Toolbar"), 10); update(); setValues(); } void Configmenu::setValues(void) { - setItemSelected(2, getScreen()->doImageDither()); - setItemSelected(3, getScreen()->doOpaqueMove()); - setItemSelected(4, getScreen()->doFullMax()); - setItemSelected(5, getScreen()->doFocusNew()); - setItemSelected(6, getScreen()->doFocusLast()); - setItemSelected(7, getScreen()->getWindowToWindowSnap()); - - setItemSelected(8, getScreen()->getWindowCornerSnap()); - setItemEnabled(8, getScreen()->getWindowToWindowSnap()); + int index = 2; +#ifdef XINERAMA + ++index; +#endif // XINERAMA + setItemSelected(index++, getScreen()->doImageDither()); + setItemSelected(index++, getScreen()->doOpaqueMove()); + setItemSelected(index++, getScreen()->doWorkspaceWarping()); + setItemSelected(index++, getScreen()->doFullMax()); + setItemSelected(index++, getScreen()->doFocusNew()); + setItemSelected(index++, getScreen()->doFocusLast()); + setItemSelected(index++, getScreen()->getWindowToWindowSnap()); + + setItemSelected(index, getScreen()->getWindowCornerSnap()); + setItemEnabled(index++, getScreen()->getWindowToWindowSnap()); - setItemSelected(9, getScreen()->doHideToolbar()); + setItemSelected(index++, getScreen()->allowScrollLock()); + setItemSelected(index++, getScreen()->doHideToolbar()); } Configmenu::~Configmenu(void) { delete focusmenu; delete placementmenu; +#ifdef XINERAMA + delete xineramamenu; +#endif // XINERAMA } + void Configmenu::itemSelected(int button, unsigned int index) { if (button != 1) return; @@ -104,33 +125,44 @@ void Configmenu::itemSelected(int button, unsigned int index) { setItemSelected(index, getScreen()->doOpaqueMove()); break; - case 3: // full maximization + case 3: // workspace wrapping + getScreen()->saveWorkspaceWarping(! getScreen()->doWorkspaceWarping()); + setItemSelected(index, getScreen()->doWorkspaceWarping()); + break; + + case 4: // full maximization getScreen()->saveFullMax(! getScreen()->doFullMax()); setItemSelected(index, getScreen()->doFullMax()); break; - case 4: // focus new windows + case 5: // focus new windows getScreen()->saveFocusNew(! getScreen()->doFocusNew()); setItemSelected(index, getScreen()->doFocusNew()); break; - case 5: // focus last window on workspace + case 6: // focus last window on workspace getScreen()->saveFocusLast(! getScreen()->doFocusLast()); setItemSelected(index, getScreen()->doFocusLast()); break; - case 6: // window-to-window snapping + case 7: // window-to-window snapping getScreen()->saveWindowToWindowSnap(! getScreen()->getWindowToWindowSnap()); setItemSelected(index, getScreen()->getWindowToWindowSnap()); setItemEnabled(index + 1, getScreen()->getWindowToWindowSnap()); break; - case 7: // window corner snapping + case 8: // window corner snapping getScreen()->saveWindowCornerSnap(! getScreen()->getWindowCornerSnap()); setItemSelected(index, getScreen()->getWindowCornerSnap()); break; - case 8: // hide toolbar + case 9: // disable mouse bindings with Scroll Lock + getScreen()->saveAllowScrollLock(! getScreen()->allowScrollLock()); + setItemSelected(index, getScreen()->allowScrollLock()); + getScreen()->reconfigure(); + break; + + case 10: // hide toolbar getScreen()->saveHideToolbar(! getScreen()->doHideToolbar()); setItemSelected(index, getScreen()->doHideToolbar()); break; @@ -142,6 +174,9 @@ void Configmenu::reconfigure(void) { setValues(); focusmenu->reconfigure(); placementmenu->reconfigure(); +#ifdef XINERAMA + xineramamenu->reconfigure(); +#endif // XINERAMA Basemenu::reconfigure(); } @@ -408,3 +443,65 @@ void Configmenu::Placementmenu::itemSelected(int button, unsigned int index) { break; } } + + +#ifdef XINERAMA +Configmenu::Xineramamenu::Xineramamenu(Configmenu *cm): + Basemenu(cm->getScreen()) { + setLabel(i18n(ConfigmenuSet, ConfigmenuXineramaSupport, "Xinerama Support")); + setInternalMenu(); + + insert(i18n(ConfigmenuSet, ConfigmenuXineramaPlacement, "Window Placement"), + 1); + insert(i18n(ConfigmenuSet, ConfigmenuXineramaMaximizing, "Window Maximizing"), + 2); + insert(i18n(ConfigmenuSet, ConfigmenuXineramaSnapping, "Window Snapping"), + 3); + + update(); + setValues(); +} + + +void Configmenu::Xineramamenu::setValues(void) { + setItemSelected(0, getScreen()->getBlackbox()->doXineramaPlacement()); + setItemSelected(1, getScreen()->getBlackbox()->doXineramaMaximizing()); + setItemSelected(2, getScreen()->getBlackbox()->doXineramaSnapping()); +} + + +void Configmenu::Xineramamenu::reconfigure(void) { + setValues(); + Basemenu::reconfigure(); +} + + +void Configmenu::Xineramamenu::itemSelected(int button, unsigned int index) { + if (button != 1) + return; + + BasemenuItem *item = find(index); + + if (! item->function()) + return; + + Blackbox *bb = getScreen()->getBlackbox(); + + switch (item->function()) { + case 1: // window placement + bb->saveXineramaPlacement(! bb->doXineramaPlacement()); + setItemSelected(0, bb->doXineramaPlacement()); + break; + + case 2: // window maximizing + bb->saveXineramaMaximizing(! bb->doXineramaMaximizing()); + setItemSelected(1, bb->doXineramaMaximizing()); + break; + + case 3: // window snapping + bb->saveXineramaSnapping(! bb->doXineramaSnapping()); + setItemSelected(2, bb->doXineramaSnapping()); + break; + } +} +#endif // XINERAMA