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 741bf97..749feee 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, ' ');

Attachment: 0002-WPrefs-add-new-mouse-buttons-configuration-support.patch
Description: Binary data

Reply via email to