Transition the ShellApp state when ready.

shell_app_state_transition emits a signal, so invoke it only when
ready, or signal handlers will see an object which is in an invalid
state.

https://bugzilla.gnome.org/show_bug.cgi?id=632501
This commit is contained in:
Giovanni Campagna 2010-11-07 20:51:25 +01:00
parent b856e2990b
commit c171ea12df

View File

@ -739,9 +739,6 @@ _shell_app_add_window (ShellApp *app,
g_object_freeze_notify (G_OBJECT (app)); g_object_freeze_notify (G_OBJECT (app));
if (app->state != SHELL_APP_STATE_STARTING)
shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
if (!app->running_state) if (!app->running_state)
create_running_state (app); create_running_state (app);
@ -754,6 +751,9 @@ _shell_app_add_window (ShellApp *app,
if (user_time > app->running_state->last_user_time) if (user_time > app->running_state->last_user_time)
app->running_state->last_user_time = user_time; app->running_state->last_user_time = user_time;
if (app->state != SHELL_APP_STATE_STARTING && app->state != SHELL_APP_STATE_RUNNING)
shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
g_object_thaw_notify (G_OBJECT (app)); g_object_thaw_notify (G_OBJECT (app));
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0); g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);