diff options
| author | Dana Jansens <danakj@orodu.net> | 2008-02-02 11:22:17 -0500 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2008-02-02 11:22:17 -0500 |
| commit | 746859c1017e9cdf73eb91470e795f0c4b98b21a (patch) | |
| tree | ff950342cdfb0290505b68a541864aa18d25279f /openbox/actions.c | |
| parent | c64be9066eaae89839bb59c4d4e9539f2a7e8fc1 (diff) | |
if windows on screen are going to be moved, then do the ReplayPointer before that occurs, so it goes to the right window. if they are not, then just wait until after the actions are run (for kdesktop's sake really)
Diffstat (limited to 'openbox/actions.c')
| -rw-r--r-- | openbox/actions.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/openbox/actions.c b/openbox/actions.c index a236b581..b7ba5b44 100644 --- a/openbox/actions.c +++ b/openbox/actions.c @@ -23,6 +23,7 @@ #include "event.h" #include "config.h" #include "client.h" +#include "openbox.h" #include "debug.h" #include "actions/all.h" @@ -35,6 +36,7 @@ static ObActionsAct* actions_build_act_from_string(const gchar *name); static ObActionsAct *interactive_act = NULL; static guint interactive_initial_state = 0; +static gboolean replay_pointer = FALSE; struct _ObActionsDefinition { guint ref; @@ -222,6 +224,16 @@ static void actions_setup_data(ObActionsData *data, data->client = client; } +void actions_set_need_pointer_replay_before_move(gboolean replay) +{ + replay_pointer = replay; +} + +gboolean actions_get_need_pointer_replay_before_move() +{ + return replay_pointer; +} + void actions_run_acts(GSList *acts, ObUserAction uact, guint state, @@ -334,8 +346,14 @@ gboolean actions_interactive_input_event(XEvent *e) void actions_client_move(ObActionsData *data, gboolean start) { static gulong ignore_start = 0; - if (start) + if (start) { ignore_start = event_start_ignore_all_enters(); + if (replay_pointer) { + /* replay the pointer event before any windows move */ + XAllowEvents(ob_display, ReplayPointer, event_curtime); + replay_pointer = FALSE; + } + } else if (config_focus_follow && data->context != OB_FRAME_CONTEXT_CLIENT) { |
