From 51b342fee54569204ce5f039e9ef34615e703014 Mon Sep 17 00:00:00 2001 From: David Maciejak Date: Wed, 27 Aug 2014 16:19:45 +0700 Subject: [PATCH] WPrefs: add new mouse buttons configuration support This patch is updating the mouse button configuration panel to be able to set action to the new mouse buttons supported. --- WPrefs.app/MouseSettings.c | 164 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 124 insertions(+), 40 deletions(-) diff --git a/WPrefs.app/MouseSettings.c b/WPrefs.app/MouseSettings.c index 741bf97b..749feeee 100644 --- a/WPrefs.app/MouseSettings.c +++ b/WPrefs.app/MouseSettings.c @@ -60,11 +60,17 @@ typedef struct _Panel { WMLabel *button1L; WMLabel *button2L; WMLabel *button3L; + WMLabel *button8L; + WMLabel *button9L; WMLabel *wheelL; + WMLabel *wheelTiltL; WMPopUpButton *button1P; WMPopUpButton *button2P; WMPopUpButton *button3P; + WMPopUpButton *button8P; + WMPopUpButton *button9P; WMPopUpButton *wheelP; + WMPopUpButton *wheelTiltP; WMButton *disaB; @@ -259,6 +265,30 @@ static void showData(_Panel * panel) } WMSetPopUpButtonSelectedItem(panel->button3P, c); + str = GetStringForKey("MouseBackwardButtonAction"); + i = getButtonAction(str); + if (i < 0) { + b = 0; + if (i == -1) { + wwarning(_("bad value %s for option %s"), str, "MouseBackwardButtonAction"); + } + } else { + b = i; + } + WMSetPopUpButtonSelectedItem(panel->button8P, b); + + str = GetStringForKey("MouseForwardButtonAction"); + i = getButtonAction(str); + if (i < 0) { + b = 0; + if (i == -1) { + wwarning(_("bad value %s for option %s"), str, "MouseForwardButtonAction"); + } + } else { + b = i; + } + WMSetPopUpButtonSelectedItem(panel->button9P, b); + str = GetStringForKey("MouseWheelAction"); i = getWheelAction(str); if (i < 0) { @@ -271,6 +301,18 @@ static void showData(_Panel * panel) } WMSetPopUpButtonSelectedItem(panel->wheelP, w); + str = GetStringForKey("MouseWheelTiltAction"); + i = getWheelAction(str); + if (i < 0) { + w = 0; + if (i == -1) { + wwarning(_("bad value %s for option %s"), str, "MouseWheelTiltAction"); + } + } else { + w = i; + } + WMSetPopUpButtonSelectedItem(panel->wheelTiltP, w); + WMSetButtonSelected(panel->disaB, GetBoolForKey("DisableWSMouseActions")); /**/ getMouseParameters(dpy, &accel, &a); @@ -436,7 +478,7 @@ static void createPanel(Panel * p) /**************** Mouse Speed ****************/ panel->speedF = WMCreateFrame(panel->box); - WMResizeWidget(panel->speedF, 225, 100); + WMResizeWidget(panel->speedF, 225, 90); WMMoveWidget(panel->speedF, 15, 5); WMSetFrameTitle(panel->speedF, _("Mouse Speed")); @@ -466,33 +508,50 @@ static void createPanel(Panel * p) panel->acceL = WMCreateLabel(panel->speedF); WMResizeWidget(panel->acceL, 50, 16); - WMMoveWidget(panel->acceL, 10, 67); + WMMoveWidget(panel->acceL, 10, 65); WMSetLabelTextAlignment(panel->acceL, WARight); WMSetLabelText(panel->acceL, _("Accel.:")); panel->acceT = WMCreateTextField(panel->speedF); WMResizeWidget(panel->acceT, 40, 20); - WMMoveWidget(panel->acceT, 60, 65); + WMMoveWidget(panel->acceT, 60, 63); WMAddNotificationObserver(returnPressed, panel, WMTextDidEndEditingNotification, panel->acceT); panel->threL = WMCreateLabel(panel->speedF); WMResizeWidget(panel->threL, 80, 16); - WMMoveWidget(panel->threL, 100, 67); + WMMoveWidget(panel->threL, 100, 65); WMSetLabelTextAlignment(panel->threL, WARight); WMSetLabelText(panel->threL, _("Threshold:")); panel->threT = WMCreateTextField(panel->speedF); WMResizeWidget(panel->threT, 30, 20); - WMMoveWidget(panel->threT, 180, 65); + WMMoveWidget(panel->threT, 180, 63); WMAddNotificationObserver(returnPressed, panel, WMTextDidEndEditingNotification, panel->threT); WMMapSubwidgets(panel->speedF); - /***************** Doubleclick Delay ****************/ + /* ************** Grab Modifier **************** */ + panel->grabF = WMCreateFrame(panel->box); + WMResizeWidget(panel->grabF, 225, 45); + WMMoveWidget(panel->grabF, 15, 95); + WMSetFrameTitle(panel->grabF, _("Mouse Grab Modifier")); + + WMSetBalloonTextForView(_("Keyboard modifier to use for actions that\n" + "involve dragging windows with the mouse,\n" + "clicking inside the window."), WMWidgetView(panel->grabF)); + + panel->grabP = WMCreatePopUpButton(panel->grabF); + WMResizeWidget(panel->grabP, 160, 20); + WMMoveWidget(panel->grabP, 50, 18); + + fillModifierPopUp(panel->grabP); + WMMapSubwidgets(panel->grabF); + + /***************** Doubleclick Delay ****************/ panel->ddelaF = WMCreateFrame(panel->box); - WMResizeWidget(panel->ddelaF, 225, 105); - WMMoveWidget(panel->ddelaF, 15, 115); + WMResizeWidget(panel->ddelaF, 225, 87); + WMMoveWidget(panel->ddelaF, 15, 140); WMSetFrameTitle(panel->ddelaF, _("Double-Click Delay")); buf1 = wmalloc(strlen(DELAY_ICON) + 2); @@ -501,7 +560,7 @@ static void createPanel(Panel * p) for (i = 0; i < 5; i++) { panel->ddelaB[i] = WMCreateCustomButton(panel->ddelaF, WBBStateChangeMask); WMResizeWidget(panel->ddelaB[i], 25, 25); - WMMoveWidget(panel->ddelaB[i], 20 + (40 * i), 25); + WMMoveWidget(panel->ddelaB[i], 20 + (40 * i), 20); WMSetButtonBordered(panel->ddelaB[i], False); WMSetButtonImagePosition(panel->ddelaB[i], WIPImageOnly); WMSetButtonAction(panel->ddelaB[i], doubleClick, panel); @@ -538,15 +597,15 @@ static void createPanel(Panel * p) panel->tester = CreateDoubleTest(panel->ddelaF, _("Test")); WMResizeWidget(panel->tester, 84, 29); - WMMoveWidget(panel->tester, 25, 60); + WMMoveWidget(panel->tester, 25, 52); panel->ddelaT = WMCreateTextField(panel->ddelaF); WMResizeWidget(panel->ddelaT, 40, 20); - WMMoveWidget(panel->ddelaT, 130, 65); + WMMoveWidget(panel->ddelaT, 130, 57); panel->ddelaL = WMCreateLabel(panel->ddelaF); WMResizeWidget(panel->ddelaL, 40, 16); - WMMoveWidget(panel->ddelaL, 175, 70); + WMMoveWidget(panel->ddelaL, 175, 63); { WMFont *font; WMColor *color; @@ -563,86 +622,102 @@ static void createPanel(Panel * p) WMMapSubwidgets(panel->ddelaF); /* ************** Workspace Action Buttons **************** */ + panel->menuF = WMCreateFrame(panel->box); - WMResizeWidget(panel->menuF, 260, 160); + WMResizeWidget(panel->menuF, 260, 222); WMMoveWidget(panel->menuF, 250, 5); WMSetFrameTitle(panel->menuF, _("Workspace Mouse Actions")); panel->disaB = WMCreateSwitchButton(panel->menuF); WMResizeWidget(panel->disaB, 205, 18); - WMMoveWidget(panel->disaB, 10, 18); + WMMoveWidget(panel->disaB, 10, 15); WMSetButtonText(panel->disaB, _("Disable mouse actions")); panel->button1L = WMCreateLabel(panel->menuF); WMResizeWidget(panel->button1L, 107, 20); - WMMoveWidget(panel->button1L, 5, 45); + WMMoveWidget(panel->button1L, 5, 40); WMSetLabelTextAlignment(panel->button1L, WARight); WMSetLabelText(panel->button1L, _("Left Button")); panel->button1P = WMCreatePopUpButton(panel->menuF); WMResizeWidget(panel->button1P, 135, 20); - WMMoveWidget(panel->button1P, 115, 45); + WMMoveWidget(panel->button1P, 115, 40); panel->button2L = WMCreateLabel(panel->menuF); WMResizeWidget(panel->button2L, 107, 20); - WMMoveWidget(panel->button2L, 5, 73); + WMMoveWidget(panel->button2L, 5, 65); WMSetLabelTextAlignment(panel->button2L, WARight); WMSetLabelText(panel->button2L, _("Middle Button")); panel->button2P = WMCreatePopUpButton(panel->menuF); WMResizeWidget(panel->button2P, 135, 20); - WMMoveWidget(panel->button2P, 115, 73); + WMMoveWidget(panel->button2P, 115, 65); panel->button3L = WMCreateLabel(panel->menuF); WMResizeWidget(panel->button3L, 107, 20); - WMMoveWidget(panel->button3L, 5, 101); + WMMoveWidget(panel->button3L, 5, 90); WMSetLabelTextAlignment(panel->button3L, WARight); WMSetLabelText(panel->button3L, _("Right Button")); panel->button3P = WMCreatePopUpButton(panel->menuF); WMResizeWidget(panel->button3P, 135, 20); - WMMoveWidget(panel->button3P, 115, 101); + WMMoveWidget(panel->button3P, 115, 90); + + panel->button8L = WMCreateLabel(panel->menuF); + WMResizeWidget(panel->button8L, 107, 20); + WMMoveWidget(panel->button8L, 5, 115); + WMSetLabelTextAlignment(panel->button8L, WARight); + WMSetLabelText(panel->button8L, _("Back Button")); + + panel->button8P = WMCreatePopUpButton(panel->menuF); + WMResizeWidget(panel->button8P, 135, 20); + WMMoveWidget(panel->button8P, 115, 115); + + panel->button9L = WMCreateLabel(panel->menuF); + WMResizeWidget(panel->button9L, 107, 20); + WMMoveWidget(panel->button9L, 5, 140); + WMSetLabelTextAlignment(panel->button9L, WARight); + WMSetLabelText(panel->button9L, _("Forward Button")); + + panel->button9P = WMCreatePopUpButton(panel->menuF); + WMResizeWidget(panel->button9P, 135, 20); + WMMoveWidget(panel->button9P, 115, 140); panel->wheelL = WMCreateLabel(panel->menuF); WMResizeWidget(panel->wheelL, 107, 20); - WMMoveWidget(panel->wheelL, 5, 129); + WMMoveWidget(panel->wheelL, 5, 165); WMSetLabelTextAlignment(panel->wheelL, WARight); WMSetLabelText(panel->wheelL, _("Mouse Wheel")); panel->wheelP = WMCreatePopUpButton(panel->menuF); WMResizeWidget(panel->wheelP, 135, 20); - WMMoveWidget(panel->wheelP, 115, 129); + WMMoveWidget(panel->wheelP, 115, 165); + + panel->wheelTiltL = WMCreateLabel(panel->menuF); + WMResizeWidget(panel->wheelTiltL, 107, 20); + WMMoveWidget(panel->wheelTiltL, 5, 190); + WMSetLabelTextAlignment(panel->wheelTiltL, WARight); + WMSetLabelText(panel->wheelTiltL, _("Mouse Wheel Tilt")); + + panel->wheelTiltP = WMCreatePopUpButton(panel->menuF); + WMResizeWidget(panel->wheelTiltP, 135, 20); + WMMoveWidget(panel->wheelTiltP, 115, 190); for (i = 0; i < wlengthof(buttonActions); i++) { WMAddPopUpButtonItem(panel->button1P, buttonActions[i]); WMAddPopUpButtonItem(panel->button2P, buttonActions[i]); WMAddPopUpButtonItem(panel->button3P, buttonActions[i]); + WMAddPopUpButtonItem(panel->button8P, buttonActions[i]); + WMAddPopUpButtonItem(panel->button9P, buttonActions[i]); } for (i = 0; i < wlengthof(wheelActions); i++) { WMAddPopUpButtonItem(panel->wheelP, wheelActions[i]); + WMAddPopUpButtonItem(panel->wheelTiltP, wheelActions[i]); } WMMapSubwidgets(panel->menuF); - /* ************** Grab Modifier **************** */ - panel->grabF = WMCreateFrame(panel->box); - WMResizeWidget(panel->grabF, 260, 50); - WMMoveWidget(panel->grabF, 250, 170); - WMSetFrameTitle(panel->grabF, _("Mouse Grab Modifier")); - - WMSetBalloonTextForView(_("Keyboard modifier to use for actions that\n" - "involve dragging windows with the mouse,\n" - "clicking inside the window."), WMWidgetView(panel->grabF)); - - panel->grabP = WMCreatePopUpButton(panel->grabF); - WMResizeWidget(panel->grabP, 160, 20); - WMMoveWidget(panel->grabP, 50, 20); - - fillModifierPopUp(panel->grabP); - - WMMapSubwidgets(panel->grabF); - WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); @@ -763,9 +838,18 @@ static void storeData(_Panel * panel) i = WMGetPopUpButtonSelectedItem(panel->button3P); SetStringForKey(button[i], "MouseRightButtonAction"); + i = WMGetPopUpButtonSelectedItem(panel->button8P); + SetStringForKey(button[i], "MouseBackwardButtonAction"); + + i = WMGetPopUpButtonSelectedItem(panel->button9P); + SetStringForKey(button[i], "MouseForwardButtonAction"); + i = WMGetPopUpButtonSelectedItem(panel->wheelP); SetStringForKey(wheel[i], "MouseWheelAction"); + i = WMGetPopUpButtonSelectedItem(panel->wheelTiltP); + SetStringForKey(wheel[i], "MouseWheelTiltAction"); + tmp = WMGetPopUpButtonItem(panel->grabP, WMGetPopUpButtonSelectedItem(panel->grabP)); tmp = wstrdup(tmp); p = strchr(tmp, ' '); -- 2.11.4.GIT