diff options
author | Alexey Korop | 2015-07-07 19:27:00 +0300 |
---|---|---|
committer | Alexey Korop | 2015-07-07 19:27:00 +0300 |
commit | 77c4006495da9dd9dd9a4f561c4775b11a2a8fe0 (patch) | |
tree | a57d259a892753460ab1a4ebef38765ee3009cbd /import-bind.patch | |
download | aur-77c4006495da9dd9dd9a4f561c4775b11a2a8fe0.tar.gz |
Initial import
Diffstat (limited to 'import-bind.patch')
-rw-r--r-- | import-bind.patch | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/import-bind.patch b/import-bind.patch new file mode 100644 index 000000000000..89498bce3605 --- /dev/null +++ b/import-bind.patch @@ -0,0 +1,107 @@ +commit ce42ade7286fa387ec77d66d79b546ddeae1592b +Author: Alexey Korop <avkorop@i.ua> +Date: Sun Mar 15 19:03:24 2015 +0200 + + import-bind.patch + +diff --git a/openbox/config.c b/openbox/config.c +index 7a4eaa1..8d50846 100644 +--- a/openbox/config.c ++++ b/openbox/config.c +@@ -572,6 +572,18 @@ static void parse_mouse(xmlNodePtr node, gpointer d) + continue; + } + ++ xmlNodePtr import_node = obt_xml_find_node(n->children, "import"); ++ while (import_node) { // import bindings from another context ++ gchar *s = obt_xml_node_string(import_node); ++ if (s) { ++ ObFrameContext import_ctx = frame_context_from_string(s); ++ if (import_ctx != OB_FRAME_CONTEXT_NONE) { ++ mouse_import_bind(cx, import_ctx); ++ } ++ } ++ import_node = obt_xml_find_node(import_node->next, "import"); ++ } ++ + for (nbut = obt_xml_find_node(n->children, "mousebind"); + nbut; + nbut = obt_xml_find_node(nbut->next, "mousebind")) +diff --git a/openbox/mouse.c b/openbox/mouse.c +index 4da22f3..08a06d4 100644 +--- a/openbox/mouse.c ++++ b/openbox/mouse.c +@@ -369,20 +369,14 @@ gboolean mouse_event(ObClient *client, XEvent *e) + return used; + } + +-gboolean mouse_bind(const gchar *buttonstr, ObFrameContext context, ++static gboolean mouse_bind_b(guint state, guint button, ObFrameContext context, + ObMouseAction mact, ObActionsAct *action) + { +- guint state = 0, button = 0; + ObMouseBinding *b; + GSList *it; + + g_assert(context != OB_FRAME_CONTEXT_NONE); + +- if (!translate_button(buttonstr, &state, &button)) { +- g_message(_("Invalid button \"%s\" in mouse binding"), buttonstr); +- return FALSE; +- } +- + for (it = bound_contexts[context]; it; it = g_slist_next(it)) { + b = it->data; + if (b->state == state && b->button == button) { +@@ -401,6 +395,39 @@ gboolean mouse_bind(const gchar *buttonstr, ObFrameContext context, + return TRUE; + } + ++gboolean mouse_bind(const gchar *buttonstr, ObFrameContext context, ++ ObMouseAction mact, ObActionsAct *action) ++{ ++ guint state = 0, button = 0; ++ ObMouseBinding *b; ++ GSList *it; ++ ++ if (!translate_button(buttonstr, &state, &button)) { ++ g_message(_("Invalid button \"%s\" in mouse binding"), buttonstr); ++ return FALSE; ++ } ++ return(mouse_bind_b(state, button, context, mact, action)); ++} ++ ++void mouse_import_bind(ObFrameContext context, ObFrameContext import_ctx) ++{ ++ GSList *it; ++ ObActionsAct *action; ++ GSList *jt; ++ ++ for (it = bound_contexts[import_ctx]; it; it = g_slist_next(it)) { ++ ObMouseBinding *b = it->data; ++ gint j; ++ for (j = 0; j < OB_NUM_MOUSE_ACTIONS; ++j) { ++ for (jt = b->actions[j]; jt; jt = g_slist_next(jt)) { ++ action = jt->data; ++ actions_act_ref(action); ++ mouse_bind_b(b->state, b->button, context, j, action); ++ } ++ } ++ } ++} ++ + void mouse_startup(gboolean reconfig) + { + grab_all_clients(TRUE); +diff --git a/openbox/mouse.h b/openbox/mouse.h +index de4c0ec..90749b4 100644 +--- a/openbox/mouse.h ++++ b/openbox/mouse.h +@@ -32,6 +32,7 @@ void mouse_shutdown(gboolean reconfig); + gboolean mouse_bind(const gchar *buttonstr, ObFrameContext context, + ObMouseAction mact, struct _ObActionsAct *action); + void mouse_unbind_all(void); ++void mouse_import_bind(ObFrameContext context, ObFrameContext import_ctx); + + gboolean mouse_event(struct _ObClient *client, XEvent *e); + |