From 3f2d342de80d819f5a40b6af1e4cc5478429e6be Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 21 Apr 2007 21:04:35 +0000 Subject: [PATCH] hide focus debugging messages --- openbox/debug.c | 25 +++++++++++++++++- openbox/debug.h | 11 +++++++- openbox/event.c | 64 +++++++++++++++++++++++------------------------ openbox/focus.c | 20 +++++++-------- openbox/openbox.c | 3 +++ openbox/screen.c | 2 +- 6 files changed, 79 insertions(+), 46 deletions(-) diff --git a/openbox/debug.c b/openbox/debug.c index 102c8891..af22c69f 100644 --- a/openbox/debug.c +++ b/openbox/debug.c @@ -1,7 +1,7 @@ /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- debug.c for the Openbox window manager - Copyright (c) 2003 Ben Jansens + Copyright (c) 2003-2007 Dana Jansens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,6 +16,8 @@ See the COPYING file for a copy of the GNU General Public License. */ +#include "debug.h" + #include #include #include @@ -38,3 +40,24 @@ void ob_debug(const gchar *a, ...) va_end(vl); } } + +static gboolean enabled_types[OB_DEBUG_TYPE_NUM] = {FALSE}; + +void ob_debug_enable(ObDebugType type, gboolean enable) +{ + g_assert(type < OB_DEBUG_TYPE_NUM); + enabled_types[type] = enable; +} + +void ob_debug_type(ObDebugType type, const gchar *a, ...) +{ + va_list vl; + + g_assert(type < OB_DEBUG_TYPE_NUM); + + if (show && enabled_types[type]) { + va_start(vl, a); + vfprintf(stderr, a, vl); + va_end(vl); + } +} diff --git a/openbox/debug.h b/openbox/debug.h index fea52c06..2b907ebf 100644 --- a/openbox/debug.h +++ b/openbox/debug.h @@ -1,7 +1,7 @@ /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- debug.h for the Openbox window manager - Copyright (c) 2003 Ben Jansens + Copyright (c) 2003-2007 Dana Jansens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,4 +25,13 @@ void ob_debug_show_output(gboolean enable); void ob_debug(const gchar *a, ...); +typedef enum { + OB_DEBUG_FOCUS, + OB_DEBUG_TYPE_NUM +} ObDebugType; + +void ob_debug_type(ObDebugType type, const gchar *a, ...); + +void ob_debug_enable(ObDebugType type, gboolean enable); + #endif diff --git a/openbox/event.c b/openbox/event.c index a2f0ef6a..b9f04e4d 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -440,27 +440,28 @@ static void event_process(const XEvent *ec, gpointer data) } } -#if 1 /* focus debugging stuff */ if (e->type == FocusIn || e->type == FocusOut) { gint mode = e->xfocus.mode; gint detail = e->xfocus.detail; Window window = e->xfocus.window; if (detail == NotifyVirtual) { - ob_debug("FOCUS %s NOTIFY VIRTUAL window 0x%x\n", - (e->type == FocusIn ? "IN" : "OUT"), window); + ob_debug_type(OB_DEBUG_FOCUS, + "FOCUS %s NOTIFY VIRTUAL window 0x%x\n", + (e->type == FocusIn ? "IN" : "OUT"), window); } else if (detail == NotifyNonlinearVirtual) { - ob_debug("FOCUS %s NOTIFY NONLINVIRTUAL window 0x%x\n", - (e->type == FocusIn ? "IN" : "OUT"), window); + ob_debug_type(OB_DEBUG_FOCUS, + "FOCUS %s NOTIFY NONLINVIRTUAL window 0x%x\n", + (e->type == FocusIn ? "IN" : "OUT"), window); } else - ob_debug("UNKNOWN FOCUS %s (d %d, m %d) window 0x%x\n", - (e->type == FocusIn ? "IN" : "OUT"), - detail, mode, window); + ob_debug_type(OB_DEBUG_FOCUS, + "UNKNOWN FOCUS %s (d %d, m %d) window 0x%x\n", + (e->type == FocusIn ? "IN" : "OUT"), + detail, mode, window); } -#endif event_set_curtime(e); event_hack_mods(e); @@ -678,18 +679,18 @@ static void event_handle_client(ObClient *client, XEvent *e) if (!XCheckIfEvent(ob_display, &ce, look_for_focusin, NULL)) { /* There is no FocusIn, this means focus went to a window that is not being managed, or a window on another screen. */ - ob_debug("Focus went to a black hole !\n"); + ob_debug_type(OB_DEBUG_FOCUS, "Focus went to a black hole !\n"); } else if (ce.xany.window == e->xany.window) { /* If focus didn't actually move anywhere, there is nothing to do*/ break; } else if (ce.xfocus.detail == NotifyPointerRoot || ce.xfocus.detail == NotifyDetailNone) { - ob_debug("Focus went to root\n"); + ob_debug_type(OB_DEBUG_FOCUS, "Focus went to root\n"); /* Focus has been reverted to the root window or nothing, so fall back to something other than the window which just had it. */ focus_fallback(FALSE); } else if (ce.xfocus.detail == NotifyInferior) { - ob_debug("Focus went to parent\n"); + ob_debug_type(OB_DEBUG_FOCUS, "Focus went to parent\n"); /* Focus has been reverted to parent, which is our frame window, or the root window, so fall back to something other than the window which had it. */ @@ -701,8 +702,9 @@ static void event_handle_client(ObClient *client, XEvent *e) if (ed.ignored) { /* The FocusIn was ignored, this means it was on a window that isn't a client. */ - ob_debug("Focus went to an unmanaged window 0x%x !\n", - ce.xfocus.window); + ob_debug_type(OB_DEBUG_FOCUS, + "Focus went to an unmanaged window 0x%x !\n", + ce.xfocus.window); focus_fallback(TRUE); } } @@ -780,21 +782,19 @@ static void event_handle_client(ObClient *client, XEvent *e) if (e->xcrossing.mode == NotifyGrab || e->xcrossing.mode == NotifyUngrab) { -#ifdef DEBUG_FOCUS - ob_debug("%sNotify mode %d detail %d on %lx IGNORED\n", - (e->type == EnterNotify ? "Enter" : "Leave"), - e->xcrossing.mode, - e->xcrossing.detail, client?client->window:0); -#endif + ob_debug_type(OB_DEBUG_FOCUS, + "%sNotify mode %d detail %d on %lx IGNORED\n", + (e->type == EnterNotify ? "Enter" : "Leave"), + e->xcrossing.mode, + e->xcrossing.detail, client?client->window:0); } else { -#ifdef DEBUG_FOCUS - ob_debug("%sNotify mode %d detail %d on %lx, " - "focusing window: %d\n", - (e->type == EnterNotify ? "Enter" : "Leave"), - e->xcrossing.mode, - e->xcrossing.detail, (client?client->window:0), - !nofocus); -#endif + ob_debug_type(OB_DEBUG_FOCUS, + "%sNotify mode %d detail %d on %lx, " + "focusing window: %d\n", + (e->type == EnterNotify ? "Enter" : "Leave"), + e->xcrossing.mode, + e->xcrossing.detail, (client?client->window:0), + !nofocus); if (!nofocus && config_focus_follow) event_enter_client(client); } @@ -910,14 +910,14 @@ static void event_handle_client(ObClient *client, XEvent *e) } break; case UnmapNotify: - ob_debug("UnmapNotify for window 0x%x eventwin 0x%x sendevent %d " - "ignores left %d\n", - client->window, e->xunmap.event, e->xunmap.from_configure, - client->ignore_unmaps); if (client->ignore_unmaps) { client->ignore_unmaps--; break; } + ob_debug("UnmapNotify for window 0x%x eventwin 0x%x sendevent %d " + "ignores left %d\n", + client->window, e->xunmap.event, e->xunmap.from_configure, + client->ignore_unmaps); client_unmanage(client); break; case DestroyNotify: diff --git a/openbox/focus.c b/openbox/focus.c index 1e343dfa..197948e9 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -158,18 +158,16 @@ void focus_set_client(ObClient *client) Window active; ObClient *old; -#ifdef DEBUG_FOCUS - ob_debug("focus_set_client 0x%lx\n", client ? client->window : 0); -#endif + ob_debug_type(OB_DEBUG_FOCUS, + "focus_set_client 0x%lx\n", client ? client->window : 0); /* uninstall the old colormap, and install the new one */ screen_install_colormap(focus_client, FALSE); screen_install_colormap(client, TRUE); if (client == NULL) { -#ifdef DEBUG_FOCUS - ob_debug("actively focusing NONWINDOW\n"); -#endif + ob_debug_type(OB_DEBUG_FOCUS, "actively focusing NONWINDOW\n"); + /* when nothing will be focused, send focus to the backup target */ XSetInputFocus(ob_display, screen_support_win, RevertToNone, event_curtime); @@ -207,13 +205,13 @@ ObClient* focus_fallback_target(gboolean allow_refocus, ObClient *old) ObClient *target = NULL; ObClient *desktop = NULL; - ob_debug("trying pointer stuff\n"); + ob_debug_type(OB_DEBUG_FOCUS, "trying pointer stuff\n"); if (config_focus_follow && !config_focus_last) { if ((target = client_under_pointer())) if (allow_refocus || target != old) if (client_normal(target) && client_can_focus(target)) { - ob_debug("found in pointer stuff\n"); + ob_debug_type(OB_DEBUG_FOCUS, "found in pointer stuff\n"); return target; } } @@ -232,12 +230,12 @@ ObClient* focus_fallback_target(gboolean allow_refocus, ObClient *old) } #endif - ob_debug("trying omnipresentness\n"); + ob_debug_type(OB_DEBUG_FOCUS, "trying omnipresentness\n"); if (allow_refocus && old && old->desktop == DESKTOP_ALL) return old; - ob_debug("trying the focus order\n"); + ob_debug_type(OB_DEBUG_FOCUS, "trying the focus order\n"); for (it = focus_order; it; it = g_list_next(it)) if (allow_refocus || it->data != old) { ObClient *c = it->data; @@ -257,7 +255,7 @@ ObClient* focus_fallback_target(gboolean allow_refocus, ObClient *old) !c->iconic) { if (client_normal(c)) { - ob_debug("found in focus order\n"); + ob_debug_type(OB_DEBUG_FOCUS, "found in focus order\n"); return it->data; } else if (c->type == OB_CLIENT_TYPE_DESKTOP && !desktop) desktop = c; diff --git a/openbox/openbox.c b/openbox/openbox.c index 5c4905ee..08360d45 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -100,6 +100,9 @@ gint main(gint argc, gchar **argv) { #ifdef DEBUG ob_debug_show_output(TRUE); +#ifdef DEBUG_FOCUS + ob_debug_enable(OB_DEBUG_FOCUS, TRUE); +#endif #endif state = OB_STATE_STARTING; diff --git a/openbox/screen.c b/openbox/screen.c index 1705fa89..5f0ef0e7 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -166,7 +166,7 @@ gboolean screen_annex() CopyFromParent, InputOutput, CopyFromParent, CWOverrideRedirect, &attrib); - XMapRaised(ob_display, screen_support_win); + XMapWindow(ob_display, screen_support_win); if (!replace_wm()) { XDestroyWindow(ob_display, screen_support_win); -- 2.39.2