add config menu entries for all the new window snapping/resistance options

This commit is contained in:
Dana Jansens 2002-08-02 19:24:38 +00:00
parent 3356db4885
commit ea02ab8cae
3 changed files with 182 additions and 27 deletions

View file

@ -20,6 +20,14 @@ $ #FocusLast
# Focus Window on Workspace Change
$ #WindowToWindowSnap
# Window-To-Window Snapping
$ #WindowToEdgeSnap
# Window-To-Edge Snapping
$ #WindowDoSnapNo
# No Snapping
$ #WindowDoSnap
# Edge Snapping
$ #WindowDoResistance
# Edge Resistance
$ #WindowCornerSnap
# Window Corner Snapping
$ #WorkspaceWarping

View file

@ -38,6 +38,8 @@ Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) {
focusmenu = new Focusmenu(this);
placementmenu = new Placementmenu(this);
windowsnapmenu = new WindowToWindowSnapmenu(this);
edgesnapmenu = new WindowToEdgeSnapmenu(this);
#ifdef XINERAMA
xineramamenu = new Xineramamenu(this);
#endif // XINERAMA
@ -46,6 +48,12 @@ Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) {
"Focus Model"), focusmenu);
insert(i18n(ConfigmenuSet, ConfigmenuWindowPlacement,
"Window Placement"), placementmenu);
insert(i18n(ConfigmenuSet, ConfigmenuWindowToWindowSnap,
"Window-To-Window Snapping"), windowsnapmenu);
insert(i18n(ConfigmenuSet, ConfigmenuWindowToEdgeSnap,
"Window-To-Edge Snapping"), edgesnapmenu);
insert(i18n(ConfigmenuSet, ConfigmenuWindowPlacement,
"Window Placement"), placementmenu);
#ifdef XINERAMA
insert(i18n(ConfigmenuSet, ConfigmenuXineramaSupport,
"XineramaSupport"), xineramamenu);
@ -62,21 +70,17 @@ Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) {
"Focus New Windows"), 5);
insert(i18n(ConfigmenuSet, ConfigmenuFocusLast,
"Focus Last Window on Workspace"), 6);
insert(i18n(ConfigmenuSet, ConfigmenuWindowToWindowSnap,
"Window-To-Window Snapping"), 7);
insert(i18n(ConfigmenuSet, ConfigmenuWindowCornerSnap,
"Window Corner Snapping"), 8);
insert(i18n(ConfigmenuSet, ConfigmenuDisableBindings,
"Disable Mouse with Scroll Lock"), 9);
"Disable Mouse with Scroll Lock"), 7);
insert(i18n(ConfigmenuSet, ConfigmenuHideToolbar,
"Hide Toolbar"), 10);
"Hide Toolbar"), 8);
update();
setValues();
}
void Configmenu::setValues(void) {
int index = 2;
int index = 4;
#ifdef XINERAMA
++index;
#endif // XINERAMA
@ -86,11 +90,6 @@ void Configmenu::setValues(void) {
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(index++, getScreen()->allowScrollLock());
setItemSelected(index++, getScreen()->doHideToolbar());
}
@ -99,6 +98,8 @@ void Configmenu::setValues(void) {
Configmenu::~Configmenu(void) {
delete focusmenu;
delete placementmenu;
delete windowsnapmenu;
delete edgesnapmenu;
#ifdef XINERAMA
delete xineramamenu;
#endif // XINERAMA
@ -145,24 +146,13 @@ void Configmenu::itemSelected(int button, unsigned int index) {
setItemSelected(index, getScreen()->doFocusLast());
break;
case 7: // window-to-window snapping
getScreen()->saveWindowToWindowSnap(! getScreen()->getWindowToWindowSnap());
setItemSelected(index, getScreen()->getWindowToWindowSnap());
setItemEnabled(index + 1, getScreen()->getWindowToWindowSnap());
break;
case 8: // window corner snapping
getScreen()->saveWindowCornerSnap(! getScreen()->getWindowCornerSnap());
setItemSelected(index, getScreen()->getWindowCornerSnap());
break;
case 9: // disable mouse bindings with Scroll Lock
case 7: // disable mouse bindings with Scroll Lock
getScreen()->saveAllowScrollLock(! getScreen()->allowScrollLock());
setItemSelected(index, getScreen()->allowScrollLock());
getScreen()->reconfigure();
break;
case 10: // hide toolbar
case 8: // hide toolbar
getScreen()->saveHideToolbar(! getScreen()->doHideToolbar());
setItemSelected(index, getScreen()->doHideToolbar());
break;
@ -174,6 +164,8 @@ void Configmenu::reconfigure(void) {
setValues();
focusmenu->reconfigure();
placementmenu->reconfigure();
windowsnapmenu->reconfigure();
edgesnapmenu->reconfigure();
#ifdef XINERAMA
xineramamenu->reconfigure();
#endif // XINERAMA
@ -445,6 +437,131 @@ void Configmenu::Placementmenu::itemSelected(int button, unsigned int index) {
}
Configmenu::WindowToWindowSnapmenu::WindowToWindowSnapmenu(Configmenu *cm) :
Basemenu(cm->getScreen()) {
setLabel(i18n(ConfigmenuSet, ConfigmenuWindowToWindowSnap,
"Window-To-Window Snapping"));
setInternalMenu();
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnapNo, "No Snapping"), 1);
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnap, "Edge Snapping"), 2);
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoResistance,
"Edge Resistance"), 3);
insert(i18n(ConfigmenuSet, ConfigmenuWindowCornerSnap,
"Window Corner Snapping"), 4);
update();
setValues();
}
void Configmenu::WindowToWindowSnapmenu::setValues(void) {
setItemSelected(0, (getScreen()->getWindowToWindowSnap() ==
BScreen::WindowNoSnap));
setItemSelected(1, (getScreen()->getWindowToWindowSnap() ==
BScreen::WindowSnap));
setItemSelected(2, (getScreen()->getWindowToWindowSnap() ==
BScreen::WindowResistance));
setItemEnabled(3, (getScreen()->getWindowToWindowSnap() ==
BScreen::WindowSnap));
setItemSelected(3, getScreen()->getWindowCornerSnap());
}
void Configmenu::WindowToWindowSnapmenu::reconfigure(void) {
setValues();
Basemenu::reconfigure();
}
void Configmenu::WindowToWindowSnapmenu::itemSelected(int button, unsigned int index) {
if (button != 1)
return;
BasemenuItem *item = find(index);
if (! item->function())
return;
switch (item->function()) {
case 1: // none
getScreen()->saveWindowToWindowSnap(BScreen::WindowNoSnap);
break;
case 2: // edge snapping
getScreen()->saveWindowToWindowSnap(BScreen::WindowSnap);
break;
case 3: // edge resistance
getScreen()->saveWindowToWindowSnap(BScreen::WindowResistance);
break;
case 4: // window corner snapping
getScreen()->saveWindowCornerSnap(! getScreen()->getWindowCornerSnap());
break;
}
setValues();
}
Configmenu::WindowToEdgeSnapmenu::WindowToEdgeSnapmenu(Configmenu *cm) :
Basemenu(cm->getScreen()) {
setLabel(i18n(ConfigmenuSet, ConfigmenuWindowToEdgeSnap,
"Window-To-Edge Snapping"));
setInternalMenu();
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnapNo, "No Snapping"), 1);
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnap, "Edge Snapping"), 2);
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoResistance,
"Edge Resistance"), 3);
update();
setValues();
}
void Configmenu::WindowToEdgeSnapmenu::setValues(void) {
setItemSelected(0, (getScreen()->getWindowToEdgeSnap() ==
BScreen::WindowNoSnap));
setItemSelected(1, (getScreen()->getWindowToEdgeSnap() ==
BScreen::WindowSnap));
setItemSelected(2, (getScreen()->getWindowToEdgeSnap() ==
BScreen::WindowResistance));
}
void Configmenu::WindowToEdgeSnapmenu::reconfigure(void) {
setValues();
Basemenu::reconfigure();
}
void Configmenu::WindowToEdgeSnapmenu::itemSelected(int button, unsigned int index) {
if (button != 1)
return;
BasemenuItem *item = find(index);
if (! item->function())
return;
switch (item->function()) {
case 1: // none
getScreen()->saveWindowToEdgeSnap(BScreen::WindowNoSnap);
break;
case 2: // edge snapping
getScreen()->saveWindowToEdgeSnap(BScreen::WindowSnap);
break;
case 3: // edge resistance
getScreen()->saveWindowToEdgeSnap(BScreen::WindowResistance);
break;
}
setValues();
}
#ifdef XINERAMA
Configmenu::Xineramamenu::Xineramamenu(Configmenu *cm):
Basemenu(cm->getScreen()) {

View file

@ -61,6 +61,34 @@ private:
virtual void reconfigure(void);
};
class WindowToWindowSnapmenu : public Basemenu {
private:
WindowToWindowSnapmenu(const WindowToWindowSnapmenu&);
WindowToWindowSnapmenu& operator=(const WindowToWindowSnapmenu&);
protected:
virtual void itemSelected(int button, unsigned int index);
virtual void setValues(void);
public:
WindowToWindowSnapmenu(Configmenu *cm);
virtual void reconfigure(void);
};
class WindowToEdgeSnapmenu : public Basemenu {
private:
WindowToEdgeSnapmenu(const WindowToEdgeSnapmenu&);
WindowToEdgeSnapmenu& operator=(const WindowToEdgeSnapmenu&);
protected:
virtual void itemSelected(int button, unsigned int index);
virtual void setValues(void);
public:
WindowToEdgeSnapmenu(Configmenu *cm);
virtual void reconfigure(void);
};
#ifdef XINERAMA
class Xineramamenu : public Basemenu {
private:
@ -79,12 +107,14 @@ private:
Focusmenu *focusmenu;
Placementmenu *placementmenu;
WindowToWindowSnapmenu *windowsnapmenu;
WindowToEdgeSnapmenu *edgesnapmenu;
#ifdef XINERAMA
Xineramamenu *xineramamenu;
#endif // XINERAMA
friend class Focusmenu;
friend class Placementmenu;
// friend class Focusmenu;
// friend class Placementmenu;
Configmenu(const Configmenu&);
Configmenu& operator=(const Configmenu&);