diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-05-08 22:53:09 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-05-08 22:53:09 +0000 |
| commit | d074b11bf9f40549eb9d138afe3c615b3091aff4 (patch) | |
| tree | be5e8bccdcdba05703fe24697a81ad1b68c27999 | |
| parent | f0e5332b4ae5504f167d75e853c13e6f718ce70a (diff) | |
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)
| -rw-r--r-- | openbox/action.c | 8 | ||||
| -rw-r--r-- | openbox/client.c | 4 | ||||
| -rw-r--r-- | 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 |
