gtk-ui: only show one window at a time
other windows were visible in window manager window list, which is ugly.
This commit is contained in:
parent
1e9192da36
commit
60f7b46028
1 changed files with 38 additions and 12 deletions
|
@ -605,8 +605,11 @@ service_save_clicked_cb (GtkButton *btn, app_data *data)
|
|||
server->base_url = tmp;
|
||||
}
|
||||
|
||||
gtk_widget_hide (GTK_WIDGET (data->service_settings_win));
|
||||
gtk_widget_hide (GTK_WIDGET (data->services_win));
|
||||
/* don't show the transient window: if user has saved a server
|
||||
* he probably wants to main window */
|
||||
gtk_window_present (GTK_WINDOW (data->sync_win));
|
||||
gtk_widget_hide (data->services_win);
|
||||
gtk_widget_hide (data->service_settings_win);
|
||||
|
||||
if (data->current_service && data->current_service != server) {
|
||||
server_config_free (data->current_service);
|
||||
|
@ -932,6 +935,25 @@ sync_type_toggled_cb (GObject *radio, app_data *data)
|
|||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
window_hide_on_delete (GtkWindow *win, app_data *data)
|
||||
{
|
||||
GtkWindow *trans;
|
||||
|
||||
trans = gtk_window_get_transient_for (win);
|
||||
if (trans) {
|
||||
gtk_window_present (trans);
|
||||
}
|
||||
|
||||
return gtk_widget_hide_on_delete (GTK_WIDGET (win));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
back_clicked_cb (GtkWidget *btn, app_data *data)
|
||||
{
|
||||
window_hide_on_delete (GTK_WINDOW (data->services_win), data);
|
||||
}
|
||||
|
||||
#ifdef USE_MOBLIN_UX
|
||||
/* truly stupid, but glade doesn't allow custom containers.
|
||||
|
@ -1005,10 +1027,10 @@ switch_dummy_to_mux_window (GtkWidget *dummy)
|
|||
static gboolean
|
||||
key_press_cb (GtkWidget *widget,
|
||||
GdkEventKey *event,
|
||||
gpointer user_data)
|
||||
app_data *data)
|
||||
{
|
||||
if (event->keyval == GDK_Escape) {
|
||||
gtk_widget_hide (widget);
|
||||
if (event->keyval == GDK_Escape && GTK_IS_WINDOW (widget)) {
|
||||
window_hide_on_delete (GTK_WINDOW (widget), data);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -1110,15 +1132,15 @@ init_ui (app_data *data)
|
|||
g_signal_connect (data->sync_win, "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
g_signal_connect (data->services_win, "delete-event",
|
||||
G_CALLBACK (gtk_widget_hide_on_delete), NULL);
|
||||
G_CALLBACK (window_hide_on_delete), data);
|
||||
g_signal_connect (data->services_win, "key-press-event",
|
||||
G_CALLBACK (key_press_cb), NULL);
|
||||
G_CALLBACK (key_press_cb), data);
|
||||
g_signal_connect (data->service_settings_win, "delete-event",
|
||||
G_CALLBACK (gtk_widget_hide_on_delete), NULL);
|
||||
G_CALLBACK (window_hide_on_delete), data);
|
||||
g_signal_connect (data->service_settings_win, "key-press-event",
|
||||
G_CALLBACK (key_press_cb), NULL);
|
||||
g_signal_connect_swapped (data->back_btn, "clicked",
|
||||
G_CALLBACK (gtk_widget_hide), data->services_win);
|
||||
G_CALLBACK (key_press_cb), data);
|
||||
g_signal_connect (data->back_btn, "clicked",
|
||||
G_CALLBACK (back_clicked_cb), data);
|
||||
g_signal_connect (data->delete_service_btn, "clicked",
|
||||
G_CALLBACK (delete_service_clicked_cb), data);
|
||||
g_signal_connect (data->stop_using_service_btn, "clicked",
|
||||
|
@ -1564,6 +1586,8 @@ show_settings_window (app_data *data, server_config *config)
|
|||
/* TODO should free old server config... make sure do not free currently used config */
|
||||
g_object_set_data (G_OBJECT (data->service_settings_win), "server", config);
|
||||
|
||||
gtk_widget_hide (data->sync_win);
|
||||
gtk_widget_hide (data->services_win);
|
||||
gtk_window_present (GTK_WINDOW (data->service_settings_win));
|
||||
}
|
||||
|
||||
|
@ -1802,7 +1826,6 @@ get_templates_cb (SyncevoService *service,
|
|||
temps_data);
|
||||
}
|
||||
|
||||
|
||||
static void show_services_window (app_data *data)
|
||||
{
|
||||
gtk_container_foreach (GTK_CONTAINER (data->services_table),
|
||||
|
@ -1815,6 +1838,9 @@ static void show_services_window (app_data *data)
|
|||
syncevo_service_get_templates_async (data->service,
|
||||
(SyncevoGetTemplatesCb)get_templates_cb,
|
||||
data);
|
||||
|
||||
gtk_widget_hide (data->sync_win);
|
||||
gtk_widget_hide (data->service_settings_win);
|
||||
gtk_window_present (GTK_WINDOW (data->services_win));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue