if (event->keyval == GDK_KEY_Escape)
{
- if (gd->cancel_cb) gd->cancel_cb(gd, gd->data);
- else if (auto_close) generic_dialog_click_cb(widget, data);
+ if (gd->cancel_cb)
+ {
+ gd->cancel_cb(gd, gd->data);
+ if (auto_close) generic_dialog_close(gd);
+ }
+ else
+ {
+ if (auto_close) generic_dialog_click_cb(widget, data);
+ }
return TRUE;
}
return FALSE;
GtkWidget *image;
image = gtk_image_new_from_stock(icon_stock_id, GTK_ICON_SIZE_DIALOG);
+#if GTK_CHECK_VERSION(3,16,0)
+ gtk_widget_set_halign(GTK_WIDGET(image), GTK_ALIGN_CENTER);
+ gtk_widget_set_valign(GTK_WIDGET(image), GTK_ALIGN_START);
+#else
gtk_misc_set_alignment(GTK_MISC(image), 0.5, 0.0);
+#endif
gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
gtk_widget_show(image);
}
{
label = pref_label_new(vbox, heading);
pref_label_bold(label, TRUE, TRUE);
+#if GTK_CHECK_VERSION(3,16,0)
+ gtk_label_set_xalign(GTK_LABEL(label), 0.0);
+ gtk_label_set_yalign(GTK_LABEL(label), 0.5);
+#else
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+#endif
}
if (text)
{
label = pref_label_new(vbox, text);
+#if GTK_CHECK_VERSION(3,16,0)
+ gtk_label_set_xalign(GTK_LABEL(label), 0.0);
+ gtk_label_set_yalign(GTK_LABEL(label), 0.5);
+#else
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+#endif
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
}
{
GList *work;
- WRITE_NL(); WRITE_STRING("<%s>", "dialogs");
- indent++;
-
- work = g_list_first(dialog_windows);
- while (work)
+ if (options->save_dialog_window_positions && dialog_windows)
{
- DialogWindow *dw = work->data;
- WRITE_NL(); WRITE_STRING("<window ");
- write_char_option(outstr, indent + 1, "title", dw->title);
- write_char_option(outstr, indent + 1, "role", dw->role);
- WRITE_INT(*dw, x);
- WRITE_INT(*dw, y);
- WRITE_INT(*dw, w);
- WRITE_INT(*dw, h);
- WRITE_STRING("/>");
- work = work->next;
+ WRITE_NL(); WRITE_STRING("<%s>", "dialogs");
+ indent++;
+
+ work = g_list_first(dialog_windows);
+ while (work)
+ {
+ DialogWindow *dw = work->data;
+ WRITE_NL(); WRITE_STRING("<window ");
+ write_char_option(outstr, indent + 1, "title", dw->title);
+ write_char_option(outstr, indent + 1, "role", dw->role);
+ WRITE_INT(*dw, x);
+ WRITE_INT(*dw, y);
+ WRITE_INT(*dw, w);
+ WRITE_INT(*dw, h);
+ WRITE_STRING("/>");
+ work = work->next;
+ }
+ indent--;
+ WRITE_NL(); WRITE_STRING("</%s>", "dialogs");
+
+ dialog_windows = NULL;
}
- indent--;
- WRITE_NL(); WRITE_STRING("</%s>", "dialogs");
}
static void generic_dialog_setup(GenericDialog *gd,
{
GtkWidget *vbox;
gint x, y, w, h;
+ GtkWidget *scrolled;
gd->auto_close = auto_close;
gd->data = data;
gd->cancel_cb = cancel_cb;
gd->dialog = window_new(GTK_WINDOW_TOPLEVEL, role, NULL, NULL, title);
+ DEBUG_NAME(gd->dialog);
gtk_window_set_type_hint(GTK_WINDOW(gd->dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
if (options->save_dialog_window_positions)
gtk_window_set_resizable(GTK_WINDOW(gd->dialog), TRUE);
gtk_container_set_border_width(GTK_CONTAINER(gd->dialog), PREF_PAD_BORDER);
+ scrolled = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_propagate_natural_height(GTK_SCROLLED_WINDOW(scrolled), TRUE);
+ gtk_scrolled_window_set_propagate_natural_width(GTK_SCROLLED_WINDOW(scrolled), TRUE);
vbox = gtk_vbox_new(FALSE, PREF_PAD_BUTTON_SPACE);
- gtk_container_add(GTK_CONTAINER(gd->dialog), vbox);
+ gtk_container_add(GTK_CONTAINER(scrolled), vbox);
+ gtk_container_add(GTK_CONTAINER(gd->dialog), scrolled);
+ gtk_widget_show(scrolled);
gtk_widget_show(vbox);
gd->vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP);