X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fopenbox.c;h=0c758cfdf4bd4c762833522c5c12c89dfb7003ed;hb=bfb0c916718cd6f68ef100841a625b06602f616b;hp=9b81f2009463f6b62f1549cceb4e8761fa547f23;hpb=5ed8f271862562e88cb60177c05f2c35d194bf68;p=chaz%2Fopenbox diff --git a/openbox/openbox.c b/openbox/openbox.c index 9b81f200..0c758cfd 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -28,6 +28,7 @@ #include "xerror.h" #include "prop.h" #include "screen.h" +#include "actions.h" #include "startupnotify.h" #include "focus.h" #include "focus_cycle.h" @@ -128,7 +129,7 @@ gint main(gint argc, gchar **argv) if (chdir(g_get_home_dir()) == -1) g_message(_("Unable to change to home directory '%s': %s"), g_get_home_dir(), g_strerror(errno)); - + /* parse the command line args, which can change the argv[0] */ parse_args(&argc, argv); /* parse the environment variables */ @@ -154,7 +155,7 @@ gint main(gint argc, gchar **argv) prop_startup(); /* Send client message telling the OB process to: - * remote_control = 1 -> reconfigure + * remote_control = 1 -> reconfigure * remote_control = 2 -> restart */ PROP_MSG(RootWindow(ob_display, ob_screen), ob_control, remote_control, 0, 0, 0); @@ -238,6 +239,8 @@ gint main(gint argc, gchar **argv) of the rc */ i = parse_startup(); + /* register all the available actions */ + actions_startup(reconfigure); /* start up config which sets up with the parser */ config_startup(i); @@ -261,7 +264,7 @@ gint main(gint argc, gchar **argv) /* load the theme specified in the rc file */ { RrTheme *theme; - if ((theme = RrThemeNew(ob_rr_inst, config_theme, + if ((theme = RrThemeNew(ob_rr_inst, config_theme, TRUE, config_font_activewindow, config_font_inactivewindow, config_font_menutitle, @@ -330,10 +333,14 @@ gint main(gint argc, gchar **argv) /* redecorate all existing windows */ for (it = client_list; it; it = g_list_next(it)) { ObClient *c = it->data; + /* the new config can change the window's decorations */ - client_setup_decor_and_functions(c, TRUE); + client_setup_decor_and_functions(c, FALSE); /* redraw the frames */ frame_adjust_area(c->frame, TRUE, TRUE, FALSE); + /* the decor sizes may have changed, so the windows may + end up in new positions */ + client_reconfigure(c, FALSE); } } @@ -367,6 +374,7 @@ gint main(gint argc, gchar **argv) window_shutdown(reconfigure); event_shutdown(reconfigure); config_shutdown(); + actions_shutdown(reconfigure); modkeys_shutdown(reconfigure); } while (reconfigure); } @@ -435,7 +443,7 @@ gint main(gint argc, gchar **argv) g_free(ob_sm_save_file); g_free(ob_sm_id); g_free(program_name); - + return exitcode; } @@ -448,7 +456,7 @@ static void signal_handler(gint signal, gpointer data) break; case SIGUSR2: ob_debug("Caught signal %d. Reconfiguring.\n", signal); - ob_reconfigure(); + ob_reconfigure(); break; case SIGCHLD: /* reap children */