Revert all commits for the Hooks feature to move it to a topic branch. This reverts commit fd2f617be7ff57fcb187daa737f66d243544c8cd. This reverts commit a47d0a53652a96ca1df96fc9268757df1431ae55. This reverts commit a1908e076736e1a618bd305c5963dbfecaa30497. This reverts commit dc2e6f6bf7143a56de360a393b33906735e63625. This reverts commit 985e7dadf9a3ebf4bd265d955c3198e96405e5d2. This reverts commit db781556d63d1a50bd1b1b4b6b5423ef703bf2c7. This reverts commit feec8f663f0a11546c2da87575fecc8a88d97ca1.
@@ -241,8 +241,6 @@ openbox/grab.c \
openbox/grab.h \ openbox/group.c \ openbox/group.h \ - openbox/hooks.c \ - openbox/hooks.h \ openbox/keyboard.c \ openbox/keyboard.h \ openbox/keytree.c \
@@ -33,7 +33,6 @@ #include "prompt.h"
#include "focus.h" #include "stacking.h" #include "openbox.h" -#include "hooks.h" #include "group.h" #include "config.h" #include "menuframe.h"@@ -585,8 +584,6 @@ g_free(settings);
ob_debug("Managed window 0x%lx plate 0x%x (%s)", window, self->frame->window, self->class); - - hooks_queue(OB_HOOK_WIN_NEW, self); } ObClient *client_fake_manage(Window window)@@ -660,9 +657,6 @@ /* remove the window from our save set, unless we are managing an internal
ObPrompt window */ if (!self->prompt) XChangeSaveSet(obt_display, self->window, SetModeDelete); - - /* this can't be queued to run later */ - hooks_run(OB_HOOK_WIN_CLOSE, self); /* update the focus lists */ focus_order_remove(self);@@ -2546,8 +2540,6 @@ it needs to be in IconicState. This includes when it is on another
desktop! */ client_change_wm_state(self); - - hooks_queue(OB_HOOK_WIN_VISIBLE, self); } return show; }@@ -2586,8 +2578,6 @@ it needs to be in IconicState. This includes when it is on another
desktop! */ client_change_wm_state(self); - - hooks_queue(OB_HOOK_WIN_INVISIBLE, self); } return hide; }@@ -3181,9 +3171,6 @@ if (config_animate_iconify && !hide_animation)
frame_begin_iconify_animation(self->frame, iconic); /* do this after starting the animation so it doesn't flash */ client_showhide(self); - - hooks_queue((iconic ? OB_HOOK_WIN_ICONIC : OB_HOOK_WIN_UNICONIC), - self); } /* iconify all direct transients, and deiconify all transients@@ -3271,8 +3258,6 @@ client_change_state(self); /* change the state hints on the client */
client_setup_decor_and_functions(self, FALSE); client_move_resize(self, x, y, w, h); - - hooks_queue((max ? OB_HOOK_WIN_MAX : OB_HOOK_WIN_UNMAX), self); } void client_shade(ObClient *self, gboolean shade)@@ -3286,8 +3271,6 @@ client_change_state(self);
client_change_wm_state(self); /* the window is being hidden/shown */ /* resize the frame to just the titlebar */ frame_adjust_area(self->frame, FALSE, TRUE, FALSE); - - hooks_queue((shade ? OB_HOOK_WIN_SHADE : OB_HOOK_WIN_UNSHADE), self); } static void client_ping_event(ObClient *self, gboolean dead)@@ -3499,9 +3482,6 @@ else
/* the new desktop's geometry may be different, so we may need to resize, for example if we are maximized */ client_reconfigure(self, FALSE); - - if (old != self->desktop) - hooks_queue(OB_HOOK_WIN_DESK_CHANGE, self); } /* move all transients */@@ -3928,9 +3908,6 @@ {
self->undecorated = undecorated; client_setup_decor_and_functions(self, TRUE); client_change_state(self); /* reflect this in the state hints */ - - hooks_queue((undecorated ? - OB_HOOK_WIN_UNDECORATED : OB_HOOK_WIN_DECORATED), self); } }
@@ -22,7 +22,6 @@ #include "keyboard.h"
#include "mouse.h" #include "actions.h" #include "translate.h" -#include "hooks.h" #include "client.h" #include "screen.h" #include "openbox.h"@@ -343,47 +342,6 @@ }
app = obt_parse_find_node(app->next, "application"); } -} - -static void parse_hook(xmlNodePtr node, gpointer d) -{ - gchar *name; - ObHook hook; - xmlNodePtr n; - - - if (!obt_parse_attr_string(node, "name", &name)) { - g_message(_("Hook in config file is missing a name")); - return; - } - - hook = hooks_hook_from_name(name); - if (!hook) - g_message(_("Unknown hook \"%s\" in config file"), name); - else { - if ((n = obt_parse_find_node(node->children, "action"))) - while (n) { - ObActionsAct *action; - - action = actions_parse(n); - if (action) - hooks_add(hook, action); - n = obt_parse_find_node(n->next, "action"); - } - } - - g_free(name); -} - -static void parse_hooks(xmlNodePtr node, gpointer d) -{ - xmlNodePtr n; - - if ((n = obt_parse_find_node(node->children, "hook"))) - while (n) { - parse_hook(n, NULL); - n = obt_parse_find_node(n->next, "hook"); - } } /*@@ -1038,8 +996,6 @@ config_menu_manage_desktops = TRUE;
config_menu_files = NULL; obt_parse_register(i, "menu", parse_menu, NULL); - - obt_parse_register(i, "hooks", parse_hooks, NULL); config_per_app_settings = NULL;
@@ -33,7 +33,6 @@ #include "prompt.h"
#include "menuframe.h" #include "keyboard.h" #include "mouse.h" -#include "hooks.h" #include "focus.h" #include "focus_cycle.h" #include "moveresize.h"@@ -742,11 +741,6 @@ }
else if (e->type == KeyPress || e->type == KeyRelease || e->type == MotionNotify) event_handle_user_input(client, e); - - XFlush(obt_display); - - /* run all the hooks at once */ - hooks_run_queue(); /* if something happens and it's not from an XEvent, then we don't know the time */@@ -1916,14 +1910,9 @@ in the case where it is animating before disappearing */
if (!client || !frame_iconify_animating(client->frame)) mouse_event(client, e); } else - keyboard_event(event_target_client(client), e); + keyboard_event((focus_cycle_target ? focus_cycle_target : + (client ? client : focus_client)), e); } -} - -ObClient* event_target_client(ObClient *client) -{ - return (focus_cycle_target ? focus_cycle_target : - (client ? client : focus_client)); } static void focus_delay_dest(gpointer data)
@@ -64,8 +64,4 @@ gboolean event_time_after(guint32 t1, guint32 t2);
Time event_get_server_time(void); -/*! Given a possible target client, returns what the target client really - should be for actions */ -struct _ObClient* event_target_client(struct _ObClient *client); - #endif
@@ -27,7 +27,6 @@ #include "group.h"
#include "focus_cycle.h" #include "screen.h" #include "keyboard.h" -#include "hooks.h" #include "focus.h" #include "stacking.h" #include "obt/prop.h"@@ -73,7 +72,6 @@
void focus_set_client(ObClient *client) { Window active; - ObClient *old; ob_debug_type(OB_DEBUG_FOCUS, "focus_set_client 0x%lx", client ? client->window : 0);@@ -89,7 +87,6 @@ /* in the middle of cycling..? kill it. */
focus_cycle_stop(focus_client); focus_cycle_stop(client); - old = focus_client; focus_client = client; if (client != NULL) {@@ -104,9 +101,6 @@ if (ob_state() != OB_STATE_EXITING) {
active = client ? client->window : None; OBT_PROP_SET32(obt_root(ob_screen), NET_ACTIVE_WINDOW, WINDOW, active); } - - hooks_queue(OB_HOOK_WIN_UNFOCUS, old); - hooks_queue(OB_HOOK_WIN_FOCUS, client); } static ObClient* focus_fallback_target(gboolean allow_refocus,
@@ -1,118 +0,0 @@
-#include "hooks.h" -#include "actions.h" -#include "client.h" -#include "focus.h" -#include "debug.h" -#include "obt/display.h" - -#include <glib.h> - -static GSList *hooks[OB_NUM_HOOKS]; -static const gchar *names[OB_NUM_HOOKS]; - -typedef struct { - ObHook hook; - struct _ObClient *client; -} ObHookQueue; - -#define QUEUE_SIZE 20 -ObHookQueue run_queue[QUEUE_SIZE]; -gint queue_size; - -void hooks_startup(gboolean reconfig) -{ - gint i; - - for (i = 0; i < OB_NUM_HOOKS; ++i) - hooks[i] = NULL; - - queue_size = 0; - - names[OB_HOOK_WIN_NEW] = "WindowNew"; - names[OB_HOOK_WIN_CLOSE] = "WindowClosed"; - names[OB_HOOK_WIN_VISIBLE] = "WindowVisible"; - names[OB_HOOK_WIN_INVISIBLE] = "WindowInvisible"; - names[OB_HOOK_WIN_ICONIC] = "WindowIconified"; - names[OB_HOOK_WIN_UNICONIC] = "WindowUniconified"; - names[OB_HOOK_WIN_MAX] = "WindowMaximized"; - names[OB_HOOK_WIN_UNMAX] = "WindowUnmaximized"; - names[OB_HOOK_WIN_SHADE] = "WindowShaded"; - names[OB_HOOK_WIN_UNSHADE] = "WindowUnshaded"; - names[OB_HOOK_WIN_FOCUS] = "WindowFocused"; - names[OB_HOOK_WIN_UNFOCUS] = "WindowUnfocused"; - names[OB_HOOK_WIN_DESK_CHANGE] = "WindowOnNewDesktop"; - names[OB_HOOK_WIN_DECORATED] = "WindowDecorated"; - names[OB_HOOK_WIN_UNDECORATED] = "WindowUndecorated"; - names[OB_HOOK_SCREEN_DESK_CHANGE] = "DesktopChanged"; -} - -void hooks_shutdown(gboolean reconfig) -{ - gint i; - - for (i = 0; i < OB_NUM_HOOKS; ++i) - while (hooks[i]) { - actions_act_unref(hooks[i]->data); - hooks[i] = g_slist_delete_link(hooks[i], hooks[i]); - } -} - -ObHook hooks_hook_from_name(const gchar *n) -{ - gint i; - - for (i = 1; i < OB_NUM_HOOKS; ++i) - if (!g_ascii_strcasecmp(n, names[i])) - return (ObHook)i; - return OB_HOOK_INVALID; -} - -void hooks_queue(ObHook hook, struct _ObClient *client) -{ - ObHookQueue *q; - - g_assert(hook < OB_NUM_HOOKS && hook > OB_HOOK_INVALID); - - //ob_debug("Queing hook %s for client 0x%x", names[hook], - // (client ? client->window : 0)); - q = &run_queue[queue_size++]; - q->hook = hook; - q->client = client; - - if (queue_size == QUEUE_SIZE) - /* queue is full */ - hooks_run_queue(); -} - -void hooks_run(ObHook hook, struct _ObClient *c) -{ - hooks_queue(hook, c); - hooks_run_queue(); -} - -void hooks_add(ObHook hook, struct _ObActionsAct *act) -{ - g_assert(hook < OB_NUM_HOOKS && hook > OB_HOOK_INVALID); - - /* append so they are executed in the same order as they appear in the - config file */ - hooks[hook] = g_slist_append(hooks[hook], act); -} - -void hooks_run_queue(void) -{ - gint i; - - for (i = 0; i < queue_size; ++i) { - const ObHookQueue *q = &run_queue[i]; - - //ob_debug("Running hook %s for client 0x%x", names[q->hook], - // (q->client ? q->client->window : 0)); - actions_run_acts(hooks[q->hook], - OB_USER_ACTION_HOOK, - 0, -1, -1, 0, - OB_FRAME_CONTEXT_NONE, - q->client); - } - queue_size = 0; -}
@@ -1,42 +0,0 @@
-#ifndef ob__hooks_h -#define ob__hooks_h - -#include <glib.h> - -struct _ObActionsAct; -struct _ObClient; - -typedef enum { - OB_HOOK_INVALID, - OB_HOOK_WIN_NEW, - OB_HOOK_WIN_CLOSE, - OB_HOOK_WIN_VISIBLE, - OB_HOOK_WIN_INVISIBLE, - OB_HOOK_WIN_ICONIC, - OB_HOOK_WIN_UNICONIC, - OB_HOOK_WIN_MAX, - OB_HOOK_WIN_UNMAX, - OB_HOOK_WIN_SHADE, - OB_HOOK_WIN_UNSHADE, - OB_HOOK_WIN_FOCUS, - OB_HOOK_WIN_UNFOCUS, - OB_HOOK_WIN_DESK_CHANGE, - OB_HOOK_WIN_DECORATED, - OB_HOOK_WIN_UNDECORATED, - OB_HOOK_SCREEN_DESK_CHANGE, - OB_NUM_HOOKS -} ObHook; - -void hooks_startup(gboolean reconfig); -void hooks_shutdown(gboolean reconfig); - -ObHook hooks_hook_from_name(const gchar *n); - -void hooks_queue(ObHook hook, struct _ObClient *c); -void hooks_run(ObHook hook, struct _ObClient *c); - -void hooks_add(ObHook hook, struct _ObActionsAct *act); - -void hooks_run_queue(void); - -#endif
@@ -108,7 +108,6 @@ OB_USER_ACTION_MOUSE_CLICK,
OB_USER_ACTION_MOUSE_DOUBLE_CLICK, OB_USER_ACTION_MOUSE_MOTION, OB_USER_ACTION_MENU_SELECTION, - OB_USER_ACTION_HOOK, OB_NUM_USER_ACTIONS } ObUserAction;
@@ -42,7 +42,6 @@ #include "group.h"
#include "config.h" #include "ping.h" #include "prompt.h" -#include "hooks.h" #include "gettext.h" #include "render/render.h" #include "render/theme.h"@@ -235,7 +234,6 @@ i = obt_parse_instance_new();
/* register all the available actions */ actions_startup(reconfigure); - hooks_startup(reconfigure); /* start up config which sets up with the parser */ config_startup(i);@@ -401,7 +399,6 @@ window_shutdown(reconfigure);
sn_shutdown(reconfigure); event_shutdown(reconfigure); config_shutdown(); - hooks_shutdown(reconfigure); actions_shutdown(reconfigure); } while (reconfigure); }
@@ -31,7 +31,6 @@ #include "frame.h"
#include "event.h" #include "focus.h" #include "popup.h" -#include "hooks.h" #include "render/render.h" #include "gettext.h" #include "obt/display.h"@@ -719,8 +718,6 @@ event_end_ignore_all_enters(ignore_start);
if (event_curtime != CurrentTime) screen_desktop_user_time = event_curtime; - - hooks_queue(OB_HOOK_SCREEN_DESK_CHANGE, NULL); } void screen_add_desktop(gboolean current)