From 38bef0a38bf907a54c193ab063b4830788398edc Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 9 Feb 2008 18:48:56 -0500 Subject: Make a pending ReplayPointer happen before moving/showing/hiding a window in an action. Commit c907f5af4ad16b1 broke kdesktop again, so we have to fix it at an even finer level. --- openbox/client.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'openbox/client.c') diff --git a/openbox/client.c b/openbox/client.c index e7290ca5..43a2f551 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -2572,6 +2572,10 @@ gboolean client_show(ObClient *self) gboolean show = FALSE; if (client_should_show(self)) { + /* replay pending pointer event before showing the window, in case it + should be going to something under the window */ + mouse_replay_pointer(); + frame_show(self->frame); show = TRUE; @@ -2613,6 +2617,10 @@ gboolean client_hide(ObClient *self) so trying to ignore them is futile in case 3 anyways */ + /* replay pending pointer event before hiding the window, in case it + should be going to the window */ + mouse_replay_pointer(); + frame_hide(self->frame); hide = TRUE; @@ -3028,6 +3036,10 @@ void client_configure(ObClient *self, gint x, gint y, gint w, gint h, if (!user) ignore_start = event_start_ignore_all_enters(); + /* replay pending pointer event before move the window, in case it + would change what window gets the event */ + mouse_replay_pointer(); + frame_adjust_area(self->frame, fmoved, fresized, FALSE); if (!user) -- cgit v1.2.3 From 27177e498b737cc351ce446f0b89010bcf29bfcd Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 13 Feb 2008 20:53:25 -0500 Subject: let you match per-app settings based on the window type --- openbox/client.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'openbox/client.c') diff --git a/openbox/client.c b/openbox/client.c index 43a2f551..371eb087 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -844,13 +844,15 @@ static ObAppSettings *client_get_settings_state(ObClient *self) !g_pattern_match(app->name, strlen(self->name), self->name, NULL)) match = FALSE; else if (app->class && - !g_pattern_match(app->class, - strlen(self->class), self->class, NULL)) + !g_pattern_match(app->class, + strlen(self->class), self->class, NULL)) match = FALSE; else if (app->role && !g_pattern_match(app->role, strlen(self->role), self->role, NULL)) match = FALSE; + else if ((signed)app->type >= 0 && app->type != self->type) + match = FALSE; if (match) { ob_debug("Window matching: %s\n", app->name); -- cgit v1.2.3