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)
This commit is contained in:
Dana Jansens 2007-05-08 22:53:09 +00:00
parent f0e5332b4a
commit d074b11bf9
3 changed files with 12 additions and 5 deletions

View file

@ -1199,7 +1199,9 @@ void action_execute(union ActionData *data)
void action_activate(union ActionData *data) void action_activate(union ActionData *data)
{ {
if (data->client.any.c) { 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 /* if using focus_delay, stop the timer now so that focus doesn't
go moving on us */ go moving on us */
event_halt_focus_delay(); event_halt_focus_delay();
@ -1217,7 +1219,9 @@ void action_activate(union ActionData *data)
void action_focus(union ActionData *data) void action_focus(union ActionData *data)
{ {
if (data->client.any.c) { 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 /* if using focus_delay, stop the timer now so that focus doesn't
go moving on us */ go moving on us */
event_halt_focus_delay(); event_halt_focus_delay();

View file

@ -2814,7 +2814,9 @@ static void client_iconify_recursive(ObClient *self,
self->window); self->window);
if (iconic) { 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; self->iconic = iconic;
/* update the focus lists.. iconic windows go to the bottom of /* update the focus lists.. iconic windows go to the bottom of

View file

@ -339,8 +339,9 @@ gboolean client_normal(ObClient *self);
gboolean client_helper(ObClient *self); gboolean client_helper(ObClient *self);
/*! Return if the client is a type which should be given focus from mouse /*! 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 presses on the *client* window. This doesn't affect clicking on the
rules apply to that. */ decorations. This doesn't count for focus cycling, different rules apply to
that. */
gboolean client_mouse_focusable(ObClient *self); gboolean client_mouse_focusable(ObClient *self);
/*! Return if the client is a type which should be given focus from the /*! Return if the client is a type which should be given focus from the