From bc0440851789c9626bc9f9d3a13a7164915bdcfa Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Sat, 20 Mar 2004 22:53:16 +0000 Subject: [PATCH] some nice options for the menus, warpPointer, xorStyle (better name wanted for this :), hilightFirst and hideDelay (this was hardcoded to .25 secs earlier) --- openbox/config.c | 17 +++++++++++++++++ openbox/config.h | 8 ++++++++ openbox/event.c | 2 +- openbox/menuframe.c | 8 ++++++-- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/openbox/config.c b/openbox/config.c index 293174df..49105411 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -59,6 +59,11 @@ guint config_keyboard_reset_state; gint config_mouse_threshold; gint config_mouse_dclicktime; +gboolean config_menu_warppointer; +gboolean config_menu_xorstyle; +gboolean config_menu_hilightfirst; +guint config_menu_hide_delay; + GSList *config_menu_files; gint config_resist_win; @@ -373,6 +378,14 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, parse_expand_tilde(c)); g_free(c); } + if ((n = parse_find_node("warpPointer", node))) + config_menu_warppointer = parse_bool(doc, n); + if ((n = parse_find_node("xorStyle", node))) + config_menu_xorstyle = parse_bool(doc, n); + if ((n = parse_find_node("hilightFirst", node))) + config_menu_hilightfirst = parse_bool(doc, n); + if ((n = parse_find_node("hideDelay", node))) + config_menu_hide_delay = parse_int(doc, n); } } @@ -553,6 +566,10 @@ void config_startup(ObParseInst *i) parse_register(i, "resistance", parse_resistance, NULL); + config_menu_warppointer = TRUE; + config_menu_xorstyle = TRUE; + config_menu_hilightfirst = TRUE; + config_menu_hide_delay = 250; config_menu_files = NULL; parse_register(i, "menu", parse_menu, NULL); diff --git a/openbox/config.h b/openbox/config.h index 63ea5a6d..59ac5542 100644 --- a/openbox/config.h +++ b/openbox/config.h @@ -97,6 +97,14 @@ extern gint config_resist_win; /*! Number of pixels to resist while crossing a screen's edge */ extern gint config_resist_edge; +/*! Warp near edge on menu? */ +extern gboolean config_menu_warppointer; +/*! make menus jump around a lot */ +extern gboolean config_menu_xorstyle; +/*! hilight first entry in menu */ +extern gboolean config_menu_hilightfirst; +/*! delay for hiding menu when opening */ +extern guint config_menu_hide_delay; /*! User-specified menu files */ extern GSList *config_menu_files; diff --git a/openbox/event.c b/openbox/event.c index a1c7e1f5..0c843ac7 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -531,7 +531,7 @@ static void event_process(const XEvent *ec, gpointer data) menu_can_hide = FALSE; ob_main_loop_timeout_add(ob_main_loop, - G_USEC_PER_SEC / 4, + config_menu_hide_delay * 1000, menu_hide_delay_func, NULL, NULL); diff --git a/openbox/menuframe.c b/openbox/menuframe.c index 03e61621..a0547935 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -217,11 +217,15 @@ void menu_frame_move_on_screen(ObMenuFrame *self) if (dx || dy) { ObMenuFrame *f; - for (f = self; f; f = f->parent) + menu_frame_move(self, self->area.x + dx, self->area.y + dy); + if (!config_menu_xorstyle) + dy = 0; + for (f = self->parent; f; f = f->parent) menu_frame_move(f, f->area.x + dx, f->area.y + dy); for (f = self->child; f; f = f->child) menu_frame_move(f, f->area.x + dx, f->area.y + dy); - XWarpPointer(ob_display, None, None, 0, 0, 0, 0, dx, dy); + if (config_menu_warppointer) + XWarpPointer(ob_display, None, None, 0, 0, 0, 0, dx, dy); } } -- 2.39.2