From d074b11bf9f40549eb9d138afe3c615b3091aff4 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 8 May 2007 22:53:09 +0000 Subject: [PATCH] let windows that cant iconify still iconify with their parents, but not non-normal windows. let you focus windows that wouldnt normally by clicking on their decor (if they have any) --- openbox/action.c | 8 ++++++-- openbox/client.c | 4 +++- openbox/client.h | 5 +++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/openbox/action.c b/openbox/action.c index 4ff6bdb9..4839088c 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -1199,7 +1199,9 @@ void action_execute(union ActionData *data) void action_activate(union ActionData *data) { if (data->client.any.c) { - if (!data->any.button || client_mouse_focusable(data->client.any.c)) { + if (!data->any.button || client_mouse_focusable(data->client.any.c) || + data->any.context != OB_FRAME_CONTEXT_CLIENT) + { /* if using focus_delay, stop the timer now so that focus doesn't go moving on us */ event_halt_focus_delay(); @@ -1217,7 +1219,9 @@ void action_activate(union ActionData *data) void action_focus(union ActionData *data) { if (data->client.any.c) { - if (!data->any.button || client_mouse_focusable(data->client.any.c)) { + if (!data->any.button || client_mouse_focusable(data->client.any.c) || + data->any.context != OB_FRAME_CONTEXT_CLIENT) + { /* if using focus_delay, stop the timer now so that focus doesn't go moving on us */ event_halt_focus_delay(); diff --git a/openbox/client.c b/openbox/client.c index d50388e7..0084588c 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -2814,7 +2814,9 @@ static void client_iconify_recursive(ObClient *self, self->window); if (iconic) { - if (self->functions & OB_CLIENT_FUNC_ICONIFY) { + /* don't let non-normal windows iconify along with their parents + or whatever */ + if (client_normal(self)) { self->iconic = iconic; /* update the focus lists.. iconic windows go to the bottom of diff --git a/openbox/client.h b/openbox/client.h index 5c5fdb90..654945b9 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -339,8 +339,9 @@ gboolean client_normal(ObClient *self); gboolean client_helper(ObClient *self); /*! Return if the client is a type which should be given focus from mouse - actions like button presses. This doesn't count for focus cycling, different - rules apply to that. */ + presses on the *client* window. This doesn't affect clicking on the + decorations. This doesn't count for focus cycling, different rules apply to + that. */ gboolean client_mouse_focusable(ObClient *self); /*! Return if the client is a type which should be given focus from the -- 2.39.2