From aec7cc719f8fd0c814e916fc00ddcf74c7571fc0 Mon Sep 17 00:00:00 2001 From: sebastid Date: Sat, 10 Jun 2006 21:59:08 +0000 Subject: [PATCH] Focus transient and modal windows if parent is focused. SVN revision: 23369 --- src/bin/e_border.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 0d5d2f485..e8bfffd19 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -4547,7 +4547,11 @@ _e_border_eval(E_Border *bd) /* Only set the window modal to the leader it there is no parent */ if ((e_config->modal_windows) && (bd->client.netwm.state.modal) && ((!bd->parent) || (bd->parent->modal != bd))) - bd->leader->modal = bd; + { + bd->leader->modal = bd; + if (bd->leader->focused) + e_border_focus_set(bd, 1, 1); + } } bd->client.icccm.fetch.client_leader = 0; } @@ -4808,7 +4812,11 @@ _e_border_eval(E_Border *bd) bd->parent = bd_parent; e_border_layer_set(bd, bd->parent->layer); if ((e_config->modal_windows) && (bd->client.netwm.state.modal)) - bd->parent->modal = bd; + { + bd->parent->modal = bd; + } + if (bd->parent->focused) + e_border_focus_set(bd, 1, 1); } bd->client.icccm.fetch.transient_for = 0; } @@ -4977,12 +4985,20 @@ _e_border_eval(E_Border *bd) if (bd->parent) { if ((e_config->modal_windows) && (bd->client.netwm.state.modal)) - bd->parent->modal = bd; + { + bd->parent->modal = bd; + if (bd->parent->focused) + e_border_focus_set(bd, 1, 1); + } } else if (bd->leader) { if ((e_config->modal_windows) && (bd->client.netwm.state.modal)) - bd->leader->modal = bd; + { + bd->leader->modal = bd; + if (bd->leader->focused) + e_border_focus_set(bd, 1, 1); + } } bd->client.netwm.update.state = 0; }