/* keyboard layout changes for modifier mapping changes. reload the
modifier map, and rebind all the key bindings as appropriate */
ob_debug("Kepboard map changed. Reloading keyboard bindings.\n");
+ ob_set_state(OB_STATE_RECONFIGURING);
modkeys_shutdown(TRUE);
modkeys_startup(TRUE);
keyboard_rebind();
+ ob_set_state(OB_STATE_RUNNING);
}
else if (e->type == ClientMessage) {
/* This is for _NET_WM_REQUEST_FRAME_EXTENTS messages. They come for
{
OB_STATE_STARTING,
OB_STATE_RUNNING,
- OB_STATE_EXITING
+ OB_STATE_EXITING,
+ OB_STATE_RECONFIGURING
} ObState;
typedef enum
{
gchar *program_name;
- state = OB_STATE_STARTING;
+ ob_set_state(OB_STATE_STARTING);
/* initialize the locale */
if (!setlocale(LC_ALL, ""))
reconfigure = FALSE;
- state = OB_STATE_RUNNING;
+ ob_set_state(OB_STATE_RUNNING);
ob_main_loop_run(ob_main_loop);
- state = OB_STATE_EXITING;
+ ob_set_state(reconfigure ?
+ OB_STATE_RECONFIGURING : OB_STATE_EXITING);
if (!reconfigure) {
dock_remove_all();
{
return state;
}
+
+void ob_set_state(ObState s)
+{
+ state = s;
+}
/* The state of execution of the window manager */
ObState ob_state();
+void ob_set_state(ObState state);
void ob_restart_other(const gchar *path);
void ob_restart();
PROP_SETA32(RootWindow(ob_display, ob_screen),
net_desktop_geometry, cardinal, geometry, 2);
- if (ob_state() == OB_STATE_STARTING)
+ if (ob_state() != OB_STATE_RUNNING)
return;
screen_update_areas();