all repos — openbox @ 72a993671fe19f1a8f4577280031fcb150e927b7

openbox fork - make it a bit more like ryudo

display a popup and perform a smooth transition when reconfiguring
Dana Jansens danakj@orodu.net
commit

72a993671fe19f1a8f4577280031fcb150e927b7

parent

506fa94dc74c34ee90af19353184029a76d206e4

1 files changed, 29 insertions(+), 0 deletions(-)

jump to
M openbox/openbox.copenbox/openbox.c

@@ -17,6 +17,7 @@ #include "mouse.h"

#include "extensions.h" #include "menuframe.h" #include "grab.h" +#include "popup.h" #include "group.h" #include "config.h" #include "mainloop.h"

@@ -194,6 +195,28 @@ extensions_query_all(); /* find which extensions are present */

if (screen_annex()) { /* it will be ours! */ do { + Window reconfig_window; + Popup *reconfig_popup; + + if (reconfigure) { + gint w, h; + + w = WidthOfScreen(ScreenOfDisplay(ob_display, ob_screen)); + h = HeightOfScreen(ScreenOfDisplay(ob_display, ob_screen)); + + reconfig_popup = popup_new(FALSE); + popup_position(reconfig_popup, CenterGravity, w / 2, h / 2); + popup_show(reconfig_popup, _("Reloading . . ."), NULL); + + reconfig_window = XCreateWindow + (ob_display, RootWindow(ob_display, ob_screen), + 0, 0, w, h, + 0, CopyFromParent, InputOnly, CopyFromParent, 0, NULL); + XMapWindow(ob_display, reconfig_window); + + XFlush(ob_display); + } + event_startup(reconfigure); grab_startup(reconfigure); /* focus_backup is used for stacking, so this needs to come before

@@ -245,6 +268,12 @@ for (it = client_list; it; it = g_list_next(it)) {

ObClient *c = it->data; frame_adjust_theme(c->frame); } + + XFlush(ob_display); + + /* destroy the hiding window */ + XDestroyWindow(ob_display, reconfig_window); + popup_free(reconfig_popup); } reconfigure = FALSE;