region: Shared non-modal layout preview dialog

https://bugzilla.gnome.org/show_bug.cgi?id=642903
This commit is contained in:
Sergey V. Udaltsov 2011-02-25 00:50:28 +00:00
parent 17427f979c
commit 8760016db2

View file

@ -40,6 +40,8 @@ enum {
static gchar **search_pattern_list = NULL;
static GtkWidget *preview_dialog = NULL;
#define RESPONSE_PREVIEW 1
static void
@ -57,6 +59,12 @@ xkl_layout_chooser_add_default_switcher_if_necessary (gchar **
g_strfreev (options_list);
}
static void
xkb_preview_destroy_callback (GtkWidget * widget)
{
preview_dialog = NULL;
}
static void
xkb_layout_chooser_response (GtkDialog * dialog,
gint response, GtkBuilder * chooser_dialog)
@ -91,25 +99,31 @@ xkb_layout_chooser_response (GtkDialog * dialog,
(chooser_dialog);
if (selected_id != NULL) {
GtkWidget *dlg =
gkbd_keyboard_drawing_dialog_new
();
if (preview_dialog == NULL) {
preview_dialog =
gkbd_keyboard_drawing_dialog_new
();
g_signal_connect (G_OBJECT
(preview_dialog),
"destroy",
G_CALLBACK
(xkb_preview_destroy_callback),
NULL);
};
gkbd_keyboard_drawing_dialog_set_layout
(dlg, config_registry,
selected_id);
gtk_window_set_transient_for
(GTK_WINDOW (dlg),
GTK_WINDOW (CWID
("xkb_layout_chooser")));
gtk_window_set_modal (GTK_WINDOW
(dlg), TRUE);
(preview_dialog,
config_registry, selected_id);
gtk_widget_show_all (dlg);
gtk_widget_show_all
(preview_dialog);
}
}
return;
}
if (preview_dialog != NULL) {
gtk_widget_destroy (preview_dialog);
}
if (search_pattern_list != NULL) {
g_strfreev (search_pattern_list);
search_pattern_list = NULL;