1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-01-26 17:45:52 +01:00

- Removed the following 3 options from configuration: SelectWindowsMouseButton,

WindowListMouseButton and ApplicationMenuMouseButton.
- Added 4 options to the configuration file for binding workspace actions to
  mouse buttons: MouseLeftButtonAction, MouseMiddleButtonAction,
  MouseRightButtonAction and MouseWheelAction. They replace the above 3
  removed options, but use a different semantic.
- mouse wheel action is runtime configurable now.

Read details about this in NEWS.
This commit is contained in:
dan
2001-04-27 23:41:17 +00:00
parent 649a7ac82c
commit 3bde6495a3
8 changed files with 287 additions and 167 deletions

View File

@@ -63,12 +63,14 @@ typedef struct _Panel {
DoubleTest *tester;
WMFrame *menuF;
WMLabel *listL;
WMLabel *appL;
WMLabel *selL;
WMPopUpButton *listP;
WMPopUpButton *appP;
WMPopUpButton *selP;
WMLabel *button1L;
WMLabel *button2L;
WMLabel *button3L;
WMLabel *wheelL;
WMPopUpButton *button1P;
WMPopUpButton *button2P;
WMPopUpButton *button3P;
WMPopUpButton *wheelP;
WMButton *disaB;
@@ -97,7 +99,9 @@ typedef struct _Panel {
static char *modifierNames[8];
static char *buttonNames[6];
static char *buttonActions[4];
static char *wheelActions[2];
#define DELAY(i) ((i)*75+170)
@@ -194,32 +198,37 @@ doubleClick(WMWidget *w, void *data)
int
getbutton(char *str)
getButtonAction(char *str)
{
if (!str)
return -2;
if (strcasecmp(str, "none")==0)
if (strcasecmp(str, "None")==0)
return 0;
else if (strcasecmp(str, "left")==0)
else if (strcasecmp(str, "OpenApplicationsMenu")==0)
return 1;
else if (strcasecmp(str, "middle")==0)
else if (strcasecmp(str, "OpenWindowListMenu")==0)
return 2;
else if (strcasecmp(str, "right")==0)
else if (strcasecmp(str, "SelectWindows")==0)
return 3;
else if (strcasecmp(str, "button1")==0)
else
return -1;
}
getWheelAction(char *str)
{
if (!str)
return -2;
if (strcasecmp(str, "None")==0)
return 0;
else if (strcasecmp(str, "SwitchWorkspaces")==0)
return 1;
else if (strcasecmp(str, "button2")==0)
return 2;
else if (strcasecmp(str, "button3")==0)
return 3;
else if (strcasecmp(str, "button4")==0)
return 4;
else if (strcasecmp(str, "button5")==0) {
return 5;
} else {
else
return -1;
}
}
@@ -240,52 +249,58 @@ showData(_Panel *panel)
{
char *str;
int i;
int a=-1, b=-1, c=-1;
int a=-1, b=-1, c=-1, w=-1;
float accel;
char buffer[32];
Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->parent));
str = GetStringForKey("SelectWindowsMouseButton");
if (str) {
i = getbutton(str);
if (i==-1) {
a = 1;
wwarning(_("bad value %s for option %s"),str, "SelectWindowsMouseButton");
} else if (i>=0) {
a = i;
}
str = GetStringForKey("MouseLeftButtonAction");
i = getButtonAction(str);
if (i<0) {
a = 3;
if (i==-1) {
wwarning(_("bad value %s for option %s"), str, "MouseLeftButtonAction");
}
} else {
a = 0;
a = i;
}
WMSetPopUpButtonSelectedItem(panel->selP, a);
WMSetPopUpButtonSelectedItem(panel->button1P, a);
str = GetStringForKey("WindowListMouseButton");
if (str) {
i = getbutton(str);
if (i==-1) {
b = 2;
wwarning(_("bad value %s for option %s"), str, "WindowListMouseButton");
} else if (i>=0) {
b = i;
}
str = GetStringForKey("MouseMiddleButtonAction");
i = getButtonAction(str);
if (i<0) {
b = 2;
if (i==-1) {
wwarning(_("bad value %s for option %s"), str, "MouseMiddleButtonAction");
}
} else {
b = 0;
b = i;
}
WMSetPopUpButtonSelectedItem(panel->listP, b);
WMSetPopUpButtonSelectedItem(panel->button2P, b);
str = GetStringForKey("ApplicationMenuMouseButton");
if (str) {
i = getbutton(str);
if (i==-1) {
c = 3;
wwarning(_("bad value %s for option %s"), str, "ApplicationMenuMouseButton");
} else if (i>=0) {
c = i;
}
str = GetStringForKey("MouseRightButtonAction");
i = getButtonAction(str);
if (i<0) {
c = 1;
if (i==-1) {
wwarning(_("bad value %s for option %s"), str, "MouseRightButtonAction");
}
} else {
c = 0;
c = i;
}
WMSetPopUpButtonSelectedItem(panel->appP, c);
WMSetPopUpButtonSelectedItem(panel->button3P, c);
str = GetStringForKey("MouseWheelAction");
i = getWheelAction(str);
if (i<0) {
w = 0;
if (i==-1) {
wwarning(_("bad value %s for option %s"), str, "MouseWheelAction");
}
} else {
w = i;
}
WMSetPopUpButtonSelectedItem(panel->wheelP, w);
WMSetButtonSelected(panel->disaB, GetBoolForKey("DisableWSMouseActions"));
@@ -458,7 +473,7 @@ createPanel(Panel *p)
/**************** Mouse Speed ****************/
panel->speedF = WMCreateFrame(panel->box);
WMResizeWidget(panel->speedF, 245, 100);
WMMoveWidget(panel->speedF, 15, 15);
WMMoveWidget(panel->speedF, 15, 5);
WMSetFrameTitle(panel->speedF, _("Mouse Speed"));
panel->speedL = WMCreateLabel(panel->speedF);
@@ -515,8 +530,8 @@ createPanel(Panel *p)
/***************** Doubleclick Delay ****************/
panel->ddelaF = WMCreateFrame(panel->box);
WMResizeWidget(panel->ddelaF, 245, 95);
WMMoveWidget(panel->ddelaF, 15, 125);
WMResizeWidget(panel->ddelaF, 245, 105);
WMMoveWidget(panel->ddelaF, 15, 115);
WMSetFrameTitle(panel->ddelaF, _("Double-Click Delay"));
buf1 = wmalloc(strlen(DELAY_ICON)+2);
@@ -526,7 +541,7 @@ createPanel(Panel *p)
panel->ddelaB[i] = WMCreateCustomButton(panel->ddelaF,
WBBStateChangeMask);
WMResizeWidget(panel->ddelaB[i], 25, 25);
WMMoveWidget(panel->ddelaB[i], 30+(40*i), 20);
WMMoveWidget(panel->ddelaB[i], 30+(40*i), 25);
WMSetButtonBordered(panel->ddelaB[i], False);
WMSetButtonImagePosition(panel->ddelaB[i], WIPImageOnly);
WMSetButtonAction(panel->ddelaB[i], doubleClick, panel);
@@ -563,15 +578,15 @@ createPanel(Panel *p)
panel->tester = CreateDoubleTest(panel->ddelaF, _("Test"));
WMResizeWidget(panel->tester, 84, 29);
WMMoveWidget(panel->tester, 35, 55);
WMMoveWidget(panel->tester, 35, 60);
panel->ddelaT = WMCreateTextField(panel->ddelaF);
WMResizeWidget(panel->ddelaT, 40, 20);
WMMoveWidget(panel->ddelaT, 140, 60);
WMMoveWidget(panel->ddelaT, 140, 65);
panel->ddelaL = WMCreateLabel(panel->ddelaF);
WMResizeWidget(panel->ddelaL, 40, 16);
WMMoveWidget(panel->ddelaL, 185, 65);
WMMoveWidget(panel->ddelaL, 185, 70);
{
WMFont *font;
WMColor *color;
@@ -586,62 +601,74 @@ createPanel(Panel *p)
WMSetLabelText(panel->ddelaL, _("msec"));
WMMapSubwidgets(panel->ddelaF);
/* ************** Workspace Action Buttons **************** */
panel->menuF = WMCreateFrame(panel->box);
WMResizeWidget(panel->menuF, 240, 145);
WMMoveWidget(panel->menuF, 270, 15);
WMResizeWidget(panel->menuF, 240, 160);
WMMoveWidget(panel->menuF, 270, 5);
WMSetFrameTitle(panel->menuF, _("Workspace Mouse Actions"));
panel->disaB = WMCreateSwitchButton(panel->menuF);
WMResizeWidget(panel->disaB, 205, 18);
WMMoveWidget(panel->disaB, 10, 20);
WMMoveWidget(panel->disaB, 10, 18);
WMSetButtonText(panel->disaB, _("Disable mouse actions"));
panel->appL = WMCreateLabel(panel->menuF);
WMResizeWidget(panel->appL, 125, 16);
WMMoveWidget(panel->appL, 5, 45);
WMSetLabelTextAlignment(panel->appL, WARight);
WMSetLabelText(panel->appL, _("Applications menu"));
panel->button1L = WMCreateLabel(panel->menuF);
WMResizeWidget(panel->button1L, 87, 20);
WMMoveWidget(panel->button1L, 5, 45);
WMSetLabelTextAlignment(panel->button1L, WARight);
WMSetLabelText(panel->button1L, _("Left Button"));
panel->appP = WMCreatePopUpButton(panel->menuF);
WMResizeWidget(panel->appP, 95, 20);
WMMoveWidget(panel->appP, 135, 45);
panel->button1P = WMCreatePopUpButton(panel->menuF);
WMResizeWidget(panel->button1P, 135, 20);
WMMoveWidget(panel->button1P, 95, 45);
panel->listL = WMCreateLabel(panel->menuF);
WMResizeWidget(panel->listL, 125, 16);
WMMoveWidget(panel->listL, 5, 80);
WMSetLabelTextAlignment(panel->listL, WARight);
WMSetLabelText(panel->listL, _("Window list menu"));
panel->button2L = WMCreateLabel(panel->menuF);
WMResizeWidget(panel->button2L, 87, 20);
WMMoveWidget(panel->button2L, 5, 73);
WMSetLabelTextAlignment(panel->button2L, WARight);
WMSetLabelText(panel->button2L, _("Middle Button"));
panel->listP = WMCreatePopUpButton(panel->menuF);
WMResizeWidget(panel->listP, 95, 20);
WMMoveWidget(panel->listP, 135, 80);
panel->button2P = WMCreatePopUpButton(panel->menuF);
WMResizeWidget(panel->button2P, 135, 20);
WMMoveWidget(panel->button2P, 95, 73);
panel->selL = WMCreateLabel(panel->menuF);
WMResizeWidget(panel->selL, 125, 16);
WMMoveWidget(panel->selL, 5, 115);
WMSetLabelTextAlignment(panel->selL, WARight);
WMSetLabelText(panel->selL, _("Select windows"));
panel->button3L = WMCreateLabel(panel->menuF);
WMResizeWidget(panel->button3L, 87, 20);
WMMoveWidget(panel->button3L, 5, 101);
WMSetLabelTextAlignment(panel->button3L, WARight);
WMSetLabelText(panel->button3L, _("Right Button"));
panel->selP = WMCreatePopUpButton(panel->menuF);
WMResizeWidget(panel->selP, 95, 20);
WMMoveWidget(panel->selP, 135, 115);
panel->button3P = WMCreatePopUpButton(panel->menuF);
WMResizeWidget(panel->button3P, 135, 20);
WMMoveWidget(panel->button3P, 95, 101);
for (i = 0; i < sizeof(buttonNames)/sizeof(char*); i++) {
WMAddPopUpButtonItem(panel->appP, buttonNames[i]);
WMAddPopUpButtonItem(panel->selP, buttonNames[i]);
WMAddPopUpButtonItem(panel->listP, buttonNames[i]);
panel->wheelL = WMCreateLabel(panel->menuF);
WMResizeWidget(panel->wheelL, 87, 20);
WMMoveWidget(panel->wheelL, 5, 129);
WMSetLabelTextAlignment(panel->wheelL, WARight);
WMSetLabelText(panel->wheelL, _("Mouse Wheel"));
panel->wheelP = WMCreatePopUpButton(panel->menuF);
WMResizeWidget(panel->wheelP, 135, 20);
WMMoveWidget(panel->wheelP, 95, 129);
for (i = 0; i < sizeof(buttonActions)/sizeof(char*); i++) {
WMAddPopUpButtonItem(panel->button1P, buttonActions[i]);
WMAddPopUpButtonItem(panel->button2P, buttonActions[i]);
WMAddPopUpButtonItem(panel->button3P, buttonActions[i]);
}
for (i = 0; i < sizeof(wheelActions)/sizeof(char*); i++) {
WMAddPopUpButtonItem(panel->wheelP, wheelActions[i]);
}
WMMapSubwidgets(panel->menuF);
/* ************** Grab Modifier **************** */
panel->grabF = WMCreateFrame(panel->box);
WMResizeWidget(panel->grabF, 240, 55);
WMMoveWidget(panel->grabF, 270, 165);
WMResizeWidget(panel->grabF, 240, 50);
WMMoveWidget(panel->grabF, 270, 170);
WMSetFrameTitle(panel->grabF, _("Mouse Grab Modifier"));
WMSetBalloonTextForView(_("Keyboard modifier to use for actions that\n"
@@ -651,7 +678,7 @@ createPanel(Panel *p)
panel->grabP = WMCreatePopUpButton(panel->grabF);
WMResizeWidget(panel->grabP, 160, 20);
WMMoveWidget(panel->grabP, 40, 25);
WMMoveWidget(panel->grabP, 40, 20);
fillModifierPopUp(panel->grabP);
@@ -746,7 +773,8 @@ storeData(_Panel *panel)
char buffer[64];
int i;
char *tmp, *p;
static char *button[6] = {"None", "left", "middle", "right", "Button4", "Button5"};
static char *button[4] = {"None", "OpenApplicationsMenu", "OpenWindowListMenu", "SelectWindows"};
static char *wheel[2] = {"None", "SwitchWorkspaces"};
WMUserDefaults *udb = WMGetStandardUserDefaults();
if (!WMGetUDBoolForKey(udb, "NoXSetStuff")) {
@@ -769,14 +797,17 @@ storeData(_Panel *panel)
SetBoolForKey(WMGetButtonSelected(panel->disaB), "DisableWSMouseActions");
i = WMGetPopUpButtonSelectedItem(panel->appP);
SetStringForKey(button[i], "ApplicationMenuMouseButton");
i = WMGetPopUpButtonSelectedItem(panel->button1P);
SetStringForKey(button[i], "MouseLeftButtonAction");
i = WMGetPopUpButtonSelectedItem(panel->listP);
SetStringForKey(button[i], "WindowListMouseButton");
i = WMGetPopUpButtonSelectedItem(panel->button2P);
SetStringForKey(button[i], "MouseMiddleButtonAction");
i = WMGetPopUpButtonSelectedItem(panel->selP);
SetStringForKey(button[i], "SelectWindowsMouseButton");
i = WMGetPopUpButtonSelectedItem(panel->button3P);
SetStringForKey(button[i], "MouseRightButtonAction");
i = WMGetPopUpButtonSelectedItem(panel->wheelP);
SetStringForKey(wheel[i], "MouseWheelAction");
tmp = WMGetPopUpButtonItem(panel->grabP,
WMGetPopUpButtonSelectedItem(panel->grabP));
@@ -803,14 +834,15 @@ InitMouseSettings(WMScreen *scr, WMWidget *parent)
modifierNames[5] = wstrdup(_("Mod3"));
modifierNames[6] = wstrdup(_("Mod4"));
modifierNames[7] = wstrdup(_("Mod5"));
buttonNames[0] = wstrdup(_("None"));
buttonNames[1] = wstrdup(_("Btn1 (left)"));
buttonNames[2] = wstrdup(_("Btn2 (middle)"));
buttonNames[3] = wstrdup(_("Btn3 (right)"));
buttonNames[4] = wstrdup(_("Btn4"));
buttonNames[5] = wstrdup(_("Btn5"));
buttonActions[0] = wstrdup(_("None"));
buttonActions[1] = wstrdup(_("Applications Menu"));
buttonActions[2] = wstrdup(_("Window List Menu"));
buttonActions[3] = wstrdup(_("Select Windows"));
wheelActions[0] = wstrdup(_("None"));
wheelActions[1] = wstrdup(_("Switch Workspaces"));
panel = wmalloc(sizeof(_Panel));
memset(panel, 0, sizeof(_Panel));