diff options
author | Ted Gould <ted@gould.cx> | 2011-03-29 14:10:12 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-03-29 14:10:12 -0500 |
commit | 0a8409579dd931abc162ec17fb40b3df385ddfab (patch) | |
tree | 015dfb19777a87bd9923b7d778fc5744bfaddba5 /src/datetime-prefs.c | |
parent | 5d401d9c978453c29c6d74694fe68e4155534283 (diff) | |
parent | 18ea5194b357dbd14dd724eb32013af8031a50be (diff) | |
download | ayatana-indicator-datetime-0a8409579dd931abc162ec17fb40b3df385ddfab.tar.gz ayatana-indicator-datetime-0a8409579dd931abc162ec17fb40b3df385ddfab.tar.bz2 ayatana-indicator-datetime-0a8409579dd931abc162ec17fb40b3df385ddfab.zip |
Make the locations dialog non-modal but resurface when needed.
Diffstat (limited to 'src/datetime-prefs.c')
-rw-r--r-- | src/datetime-prefs.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/datetime-prefs.c b/src/datetime-prefs.c index fbc88f2..5a6fd91 100644 --- a/src/datetime-prefs.c +++ b/src/datetime-prefs.c @@ -53,6 +53,7 @@ GtkWidget * date_spin = NULL; guint save_time_id = 0; gboolean user_edited_time = FALSE; gboolean changing_time = FALSE; +GtkWidget * loc_dlg = NULL; /* Turns the boolean property into a string gsettings */ static GVariant * @@ -495,10 +496,25 @@ setup_time_spinners (GtkWidget * time, GtkWidget * date) } static void +hide_locations () +{ + if (loc_dlg != NULL) + gtk_widget_destroy (loc_dlg); +} + +static void show_locations (GtkWidget * button, GtkWidget * dlg) { - GtkWidget * locationsDlg = datetime_setup_locations_dialog (GTK_WINDOW (dlg), tzmap); - gtk_widget_show_all (locationsDlg); + if (loc_dlg == NULL) { + loc_dlg = datetime_setup_locations_dialog (tzmap); + gtk_window_set_transient_for (GTK_WINDOW (loc_dlg), GTK_WINDOW (dlg)); + g_signal_connect (loc_dlg, "destroy", G_CALLBACK (gtk_widget_destroyed), &loc_dlg); + g_signal_connect (dlg, "focus-in-event", G_CALLBACK (hide_locations), NULL); + gtk_widget_show_all (loc_dlg); + } + else { + gtk_window_present_with_time (GTK_WINDOW (loc_dlg), gtk_get_current_event_time ()); + } } static gboolean |