summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-30 20:53:00 +0000
committerDana Jansens <danakj@orodu.net>2007-05-30 20:53:00 +0000
commit467b7f4d4d52b8e1cefade20ddf13e65aae314ce (patch)
tree2273a9fa5a847a80d6497d1c22ee746b895de05d
parent4ff0d49cc78269d1d34ef27af037f10397d18412 (diff)
make it possible to iconify a modal window when its parent is the only window left on the desktop.
when focus falls off of a window, don't allow focus to go back to that same target - when a window is iconified is the case. what focus_fallback_target, to check whe allow_refocus is false, check where focus will actually be sent
-rw-r--r--openbox/event.c2
-rw-r--r--openbox/focus.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/openbox/event.c b/openbox/event.c
index f5da603b..37910684 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -531,7 +531,7 @@ static void event_process(const XEvent *ec, gpointer data)
*/
if (!focus_left_screen)
- focus_fallback(TRUE, FALSE);
+ focus_fallback(FALSE, FALSE);
}
}
else if (!client)
diff --git a/openbox/focus.c b/openbox/focus.c
index d60f5ac8..93058d55 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -105,7 +105,7 @@ static ObClient* focus_fallback_target(gboolean allow_refocus,
ob_debug_type(OB_DEBUG_FOCUS, "trying pointer stuff\n");
if (allow_pointer && config_focus_follow)
if ((c = client_under_pointer()) &&
- (allow_refocus || c != old) &&
+ (allow_refocus || client_focus_target(c) != old) &&
(client_normal(c) &&
client_focus(c)))
{
@@ -125,7 +125,7 @@ static ObClient* focus_fallback_target(gboolean allow_refocus,
*/
if (c->desktop == screen_desktop &&
client_normal(c) &&
- (allow_refocus || c != old) &&
+ (allow_refocus || client_focus_target(c) != old) &&
client_focus(c))
{
ob_debug_type(OB_DEBUG_FOCUS, "found in focus order\n");
@@ -144,7 +144,7 @@ static ObClient* focus_fallback_target(gboolean allow_refocus,
backup fallback though)
*/
if (c->type == OB_CLIENT_TYPE_DESKTOP &&
- (allow_refocus || c != old) &&
+ (allow_refocus || client_focus_target(c) != old) &&
client_focus(c))
{
ob_debug_type(OB_DEBUG_FOCUS, "found a desktop window\n");