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;
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;
setValues();
focusmenu->reconfigure();
placementmenu->reconfigure();
+#ifdef XINERAMA
+ xineramamenu->reconfigure();
+#endif // XINERAMA
Basemenu::reconfigure();
}
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