]> git.mdlowis.com Git - proto/labwc.git/commitdiff
config: support <mouse><default />
authorJohan Malm <jgm323@gmail.com>
Fri, 22 Apr 2022 16:52:01 +0000 (17:52 +0100)
committerJohan Malm <jgm323@gmail.com>
Fri, 22 Apr 2022 16:52:01 +0000 (17:52 +0100)
This loads default mousebinds and provides a way to keep config files
simpler whilst allowing user specific binds.

Note that if no rc.xml is found, or if no <mouse><mousebind> entries
exist, the same default mousebinds will be loaded even if the <default />
element is not provided.

Example usage:

  <mouse>
    <default />
    <context name="Root">
      <mousebind button="Right" action="Press">
        <action name="Execute" command="my-menu-application" />
      </mousebind>
    </context>
  </mouse>

docs/labwc-config.5.scd
src/config/rcxml.c
src/cursor.c

index a58546cc967d9bba18354fd654fa345a9952b641..f3a8aa5e44276bce90f9cf17e1d392d656224a9f 100644 (file)
@@ -160,6 +160,13 @@ Configuration must be wrapped in a <labwc_config> root-node.
        - DoubleClick: Two presses within the doubleClickTime.
        - Drag: Pressing the button within the context, then moving the cursor
 
+*<mouse><default />*
+       Load default mousebinds. This is an addition to the openbox
+       specification and provides a way to keep config files simpler whilst
+       allowing user specific binds.  Note that if no rc.xml is found, or if no
+       <mouse><mousebind> entries exist, the same default mousebinds will be
+       loaded even if the <default /> element is not provided.
+
 # LIBINPUT
 
 *<libinput><device category="">*
index 894ca5fa610f600cabe0061fa61bed11b7df35e1..176980a2a82196c8617a5c517654badde8c08f82 100644 (file)
@@ -41,6 +41,7 @@ enum font_place {
 };
 
 static void load_default_key_bindings(void);
+static void load_default_mouse_bindings(void);
 
 static void
 fill_keybind(char *nodename, char *content)
@@ -333,6 +334,9 @@ entry(xmlNode *node, char *nodename, char *content)
        if (!strcmp(nodename, "default.keyboard")) {
                load_default_key_bindings();
                return;
+       } else if (!strcmp(nodename, "default.mouse")) {
+               load_default_mouse_bindings();
+               return;
        }
 
        /* handle the rest */
index 7d3669f3ad6cabb5a77f9b0dd3d0b99f11d38ef1..663ecb809f9e09ee6f3fda20cb9c7e8a81306599 100644 (file)
@@ -619,7 +619,7 @@ handle_press_mousebinding(struct view *view, struct server *server,
        bool activated_any = false;
        bool activated_any_frame = false;
 
-       wl_list_for_each_reverse(mousebind, &rc.mousebinds, link) {
+       wl_list_for_each(mousebind, &rc.mousebinds, link) {
                if (ssd_part_contains(mousebind->context, view_area)
                                && mousebind->button == button
                                && modifiers == mousebind->modifiers) {
@@ -655,6 +655,7 @@ handle_press_mousebinding(struct view *view, struct server *server,
                        activated_any = true;
                        activated_any_frame |= mousebind->context == LAB_SSD_FRAME;
                        actions_run(view, server, &mousebind->actions, resize_edges);
+                       break;
                }
        }
        return activated_any && activated_any_frame;