]> Dogcows Code - chaz/openbox/blobdiff - plugins/mouse/mouserc_parse.l
comment stuff correctly for xresources
[chaz/openbox] / plugins / mouse / mouserc_parse.l
index 7563c6f3b044bd963bf18d15438a5326ebd05f4f..1f2d19705d8b08af3dfbd931ff88b688c6babd8f 100644 (file)
@@ -21,12 +21,11 @@ static void addbinding();
 %}
 
 field [A-Za-z0-9][-A-Za-z0-9]*
-sep [ \t]+
 white [ \t]*
 
 %%
 
-^{white}\#.+\n lineno++;
+^{white}#.*\n lineno++;
 {field} gotfield();
 \n endofline();
 [ \t]
@@ -64,7 +63,7 @@ static void endofline()
 
 static void addbinding()
 {
-    Action *a;
+    Action *a = NULL;
     MouseAction mact;
 
     if (!g_ascii_strcasecmp(event, "press"))
@@ -83,107 +82,25 @@ static void addbinding()
         return;
     }
 
-    if (!g_ascii_strcasecmp(action, "focus")) {
-        a = action_new(action_focus);
-    } else if (!g_ascii_strcasecmp(action, "unfocus")) {
-        a = action_new(action_unfocus);
-    } else if (!g_ascii_strcasecmp(action, "iconify")) {
-        a = action_new(action_iconify);
-    } else if (!g_ascii_strcasecmp(action, "raise")) {
-        a = action_new(action_raise);
-    } else if (!g_ascii_strcasecmp(action, "lower")) {
-        a = action_new(action_lower);
-    } else if (!g_ascii_strcasecmp(action, "focusraise")) {
-        a = action_new(action_focusraise);
-    } else if (!g_ascii_strcasecmp(action, "close")) {
-        a = action_new(action_close);
-    } else if (!g_ascii_strcasecmp(action, "kill")) {
-        a = action_new(action_kill);
-    } else if (!g_ascii_strcasecmp(action, "shade")) {
-        a = action_new(action_shade);
-    } else if (!g_ascii_strcasecmp(action, "unshade")) {
-        a = action_new(action_unshade);
-    } else if (!g_ascii_strcasecmp(action, "toggleshade")) {
-        a = action_new(action_toggle_shade);
-    } else if (!g_ascii_strcasecmp(action, "toggleomnipresent")) {
-        a = action_new(action_toggle_omnipresent);
-    } else if (!g_ascii_strcasecmp(action, "maximizefull")) {
-        a = action_new(action_maximize_full);
-    } else if (!g_ascii_strcasecmp(action, "unmaximizefull")) {
-        a = action_new(action_unmaximize_full);
-    } else if (!g_ascii_strcasecmp(action, "togglemaximizefull")) {
-        a = action_new(action_toggle_maximize_full);
-    } else if (!g_ascii_strcasecmp(action, "maximizehorz")) {
-        a = action_new(action_maximize_horz);
-    } else if (!g_ascii_strcasecmp(action, "unmaximizehorz")) {
-        a = action_new(action_unmaximize_horz);
-    } else if (!g_ascii_strcasecmp(action, "togglemaximizehorz")) {
-        a = action_new(action_toggle_maximize_horz);
-    } else if (!g_ascii_strcasecmp(action, "maximizevert")) {
-        a = action_new(action_maximize_vert);
-    } else if (!g_ascii_strcasecmp(action, "unmaximizevert")) {
-        a = action_new(action_unmaximize_vert);
-    } else if (!g_ascii_strcasecmp(action, "togglemaximizevert")) {
-        a = action_new(action_toggle_maximize_vert);
-    } else if (!g_ascii_strcasecmp(action, "sendtonextdesktop")) {
-        a = action_new(action_send_to_next_desktop);
-        a->data.sendtonextprev.wrap = FALSE;
-        a->data.sendtonextprev.follow = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "sendtonextdesktopwrap")) {
-        a = action_new(action_send_to_next_desktop);
-        a->data.sendtonextprev.wrap = TRUE;
-        a->data.sendtonextprev.follow = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "sendtopreviousdesktop")) {
-        a = action_new(action_send_to_previous_desktop);
-        a->data.sendtonextprev.wrap = FALSE;
-        a->data.sendtonextprev.follow = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "sendtopreviousdesktopwrap")) {
-        a = action_new(action_send_to_previous_desktop);
-        a->data.sendtonextprev.wrap = TRUE;
-        a->data.sendtonextprev.follow = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "nextdesktop")) {
-        a = action_new(action_next_desktop);
-        a->data.nextprevdesktop.wrap = FALSE;
-    } else if (!g_ascii_strcasecmp(action, "nextdesktopwrap")) {
-        a = action_new(action_next_desktop);
-        a->data.nextprevdesktop.wrap = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "previousdesktop")) {
-        a = action_new(action_previous_desktop);
-        a->data.nextprevdesktop.wrap = FALSE;
-    } else if (!g_ascii_strcasecmp(action, "previousdesktopwrap")) {
-        a = action_new(action_previous_desktop);
-        a->data.nextprevdesktop.wrap = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "nextdesktopcolumn")) {
-        a = action_new(action_next_desktop_column);
-        a->data.nextprevdesktop.wrap = FALSE;
-    } else if (!g_ascii_strcasecmp(action, "nextdesktopcolumnwrap")) {
-        a = action_new(action_next_desktop_column);
-        a->data.nextprevdesktop.wrap = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "previousdesktopcolumn")) {
-        a = action_new(action_previous_desktop_column);
-        a->data.nextprevdesktop.wrap = FALSE;
-    } else if (!g_ascii_strcasecmp(action, "previousdesktopcolumnwrap")) {
-        a = action_new(action_previous_desktop_column);
-        a->data.nextprevdesktop.wrap = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "nextdesktoprow")) {
-        a = action_new(action_next_desktop_row);
-        a->data.nextprevdesktop.wrap = FALSE;
-    } else if (!g_ascii_strcasecmp(action, "nextdesktoprowwrap")) {
-        a = action_new(action_next_desktop_row);
-        a->data.nextprevdesktop.wrap = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "previousdesktoprow")) {
-        a = action_new(action_previous_desktop_row);
-        a->data.nextprevdesktop.wrap = FALSE;
-    } else if (!g_ascii_strcasecmp(action, "previousdesktoprowwrap")) {
-        a = action_new(action_previous_desktop_row);
-        a->data.nextprevdesktop.wrap = TRUE;
-    } else if (!g_ascii_strcasecmp(action, "move") &&
-               mact == MouseAction_Motion) {
-        a = action_new(action_move);
-    } else if (!g_ascii_strcasecmp(action, "resize") &&
-               mact == MouseAction_Motion) {
-        a = action_new(action_resize);
-    } else {
+    a = action_from_string(action);
+    if (mact == MouseAction_Motion) {
+        if (a && !(a->func == action_move || a->func == action_resize)) {
+            action_free(a);
+            a = NULL;
+        }
+        /* the below types cannot be used with !motion events, or at all with
+           mouse bindings */
+    } else if (a && (a->func == action_move || a->func == action_resize ||
+                     a->func == action_execute || a->func == action_desktop ||
+                     a->func == action_move_relative_horz ||
+                     a->func == action_move_relative_vert ||
+                     a->func == action_resize_relative_horz ||
+                     a->func == action_resize_relative_vert)) {
+        action_free(a);
+        a = NULL;
+    }
+    if (a == NULL) {
         g_warning("Invalid action '%s' in '%s' on line %d", action, path,
                   lineno);
         return;
This page took 0.024567 seconds and 4 git commands to generate.