summaryrefslogtreecommitdiff
path: root/openbox/actions.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2008-02-02 11:22:17 -0500
committerDana Jansens <danakj@orodu.net>2008-02-02 11:22:17 -0500
commit746859c1017e9cdf73eb91470e795f0c4b98b21a (patch)
treeff950342cdfb0290505b68a541864aa18d25279f /openbox/actions.c
parentc64be9066eaae89839bb59c4d4e9539f2a7e8fc1 (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.c20
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)
{