Commit 008d7136d8d2c884134987ebb412d72e447894ed
1 parent
7816d759
Exists in
master
and in
1 other branch
Fixing dialog boxes.
Showing
12 changed files
with
73 additions
and
129 deletions
Show diff stats
src/dialogs/dialog.c
@@ -54,13 +54,10 @@ | @@ -54,13 +54,10 @@ | ||
54 | 54 | ||
55 | #elif GTK_CHECK_VERSION(3,12,0) | 55 | #elif GTK_CHECK_VERSION(3,12,0) |
56 | 56 | ||
57 | - gboolean use_header; | ||
58 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
59 | - | ||
60 | GtkWidget * dialog = | 57 | GtkWidget * dialog = |
61 | GTK_WIDGET(g_object_new( | 58 | GTK_WIDGET(g_object_new( |
62 | GTK_TYPE_DIALOG, | 59 | GTK_TYPE_DIALOG, |
63 | - "use-header-bar", (use_header ? 1 : 0), | 60 | + "use-header-bar", (v3270_dialog_get_use_header() ? 1 : 0), |
64 | NULL | 61 | NULL |
65 | )); | 62 | )); |
66 | 63 |
src/dialogs/load.c
@@ -233,14 +233,11 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -233,14 +233,11 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
233 | { | 233 | { |
234 | g_return_val_if_fail(GTK_IS_V3270(widget),NULL); | 234 | g_return_val_if_fail(GTK_IS_V3270(widget),NULL); |
235 | 235 | ||
236 | - gboolean use_header; | ||
237 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
238 | - | ||
239 | // Create dialog | 236 | // Create dialog |
240 | V3270LoadDialog * dialog = V3270_LOAD_DIALOG( | 237 | V3270LoadDialog * dialog = V3270_LOAD_DIALOG( |
241 | g_object_new( | 238 | g_object_new( |
242 | GTK_TYPE_V3270LoadDialog, | 239 | GTK_TYPE_V3270LoadDialog, |
243 | - "use-header-bar", (use_header ? 1 : 0), | 240 | + "use-header-bar", (v3270_dialog_get_use_header() ? 1 : 0), |
244 | NULL) | 241 | NULL) |
245 | ); | 242 | ); |
246 | 243 |
src/dialogs/popups.c
@@ -32,6 +32,7 @@ | @@ -32,6 +32,7 @@ | ||
32 | #include <terminal.h> | 32 | #include <terminal.h> |
33 | #include <v3270/dialogs.h> | 33 | #include <v3270/dialogs.h> |
34 | #include <v3270/settings.h> | 34 | #include <v3270/settings.h> |
35 | + #include <v3270/tools.h> | ||
35 | #include <lib3270/popup.h> | 36 | #include <lib3270/popup.h> |
36 | 37 | ||
37 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 38 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
src/dialogs/print/settingsdialog.c
@@ -454,13 +454,10 @@ static void V3270FTSettingsDialog_init(V3270FTSettingsDialog *widget) | @@ -454,13 +454,10 @@ static void V3270FTSettingsDialog_init(V3270FTSettingsDialog *widget) | ||
454 | 454 | ||
455 | LIB3270_EXPORT GtkWidget * v3270_ft_settings_dialog_new(GtkWidget *parent) | 455 | LIB3270_EXPORT GtkWidget * v3270_ft_settings_dialog_new(GtkWidget *parent) |
456 | { | 456 | { |
457 | - gboolean use_header; | ||
458 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
459 | - | ||
460 | GtkWidget * dialog = | 457 | GtkWidget * dialog = |
461 | GTK_WIDGET(g_object_new( | 458 | GTK_WIDGET(g_object_new( |
462 | GTK_TYPE_V3270_FT_DIALOG, | 459 | GTK_TYPE_V3270_FT_DIALOG, |
463 | - "use-header-bar", (use_header ? 1 : 0), | 460 | + "use-header-bar", (v3270_dialog_get_use_header() ? 1 : 0), |
464 | NULL | 461 | NULL |
465 | )); | 462 | )); |
466 | 463 |
src/dialogs/save/private.h
@@ -49,7 +49,7 @@ | @@ -49,7 +49,7 @@ | ||
49 | GtkWidget * terminal; | 49 | GtkWidget * terminal; |
50 | GtkWidget * filename; | 50 | GtkWidget * filename; |
51 | GtkWidget * charset; | 51 | GtkWidget * charset; |
52 | - GtkWidget * format; | 52 | + GtkComboBox * format; |
53 | LIB3270_CONTENT_OPTION mode; | 53 | LIB3270_CONTENT_OPTION mode; |
54 | 54 | ||
55 | }; | 55 | }; |
src/dialogs/save/save.c
@@ -63,13 +63,6 @@ | @@ -63,13 +63,6 @@ | ||
63 | 63 | ||
64 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 64 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
65 | 65 | ||
66 | -/* | ||
67 | - static void V3270SaveDialog_finalize(V3270SaveDialog *object) | ||
68 | - { | ||
69 | - V3270SaveDialog *dialog = V3270_SAVE_DIALOG(object); | ||
70 | - } | ||
71 | -*/ | ||
72 | - | ||
73 | static void V3270SaveDialog_class_init(V3270SaveDialogClass G_GNUC_UNUSED(*klass)) | 66 | static void V3270SaveDialog_class_init(V3270SaveDialogClass G_GNUC_UNUSED(*klass)) |
74 | { | 67 | { |
75 | 68 | ||
@@ -78,16 +71,6 @@ | @@ -78,16 +71,6 @@ | ||
78 | 71 | ||
79 | } | 72 | } |
80 | 73 | ||
81 | - static void cancel_operation(GtkButton G_GNUC_UNUSED(*button), GtkDialog *dialog) | ||
82 | - { | ||
83 | - gtk_dialog_response(dialog,GTK_RESPONSE_CANCEL); | ||
84 | - } | ||
85 | - | ||
86 | - static void apply_operation(GtkButton G_GNUC_UNUSED(*button), GtkDialog *dialog) | ||
87 | - { | ||
88 | - gtk_dialog_response(dialog,GTK_RESPONSE_APPLY); | ||
89 | - } | ||
90 | - | ||
91 | #ifdef WIN32 | 74 | #ifdef WIN32 |
92 | static void icon_press(GtkEntry G_GNUC_UNUSED(*entry), G_GNUC_UNUSED GtkEntryIconPosition icon_pos, G_GNUC_UNUSED GdkEvent *event, V3270SaveDialog *widget) | 75 | static void icon_press(GtkEntry G_GNUC_UNUSED(*entry), G_GNUC_UNUSED GtkEntryIconPosition icon_pos, G_GNUC_UNUSED GdkEvent *event, V3270SaveDialog *widget) |
93 | { | 76 | { |
@@ -138,27 +121,42 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -138,27 +121,42 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
138 | #endif // _WIN32 | 121 | #endif // _WIN32 |
139 | 122 | ||
140 | 123 | ||
141 | - static void filename_changed(GtkEntry *entry, GtkComboBox *formats) | 124 | + static void filename_changed(GtkEntry *entry, V3270SaveDialog *dialog) |
142 | { | 125 | { |
143 | const gchar * text = gtk_entry_get_text(entry); | 126 | const gchar * text = gtk_entry_get_text(entry); |
127 | + GtkWidget * button = gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog),GTK_RESPONSE_APPLY); | ||
144 | 128 | ||
145 | - if(!(text && *text)) | 129 | + if(!(text && *text)) { |
130 | + gtk_widget_set_sensitive(button,FALSE); | ||
146 | return; | 131 | return; |
132 | + } | ||
133 | + | ||
134 | + if(g_str_has_suffix(text,G_DIR_SEPARATOR_S)) { | ||
135 | + gtk_widget_set_sensitive(button,FALSE); | ||
136 | + return; | ||
137 | + } | ||
138 | + | ||
139 | + g_autofree gchar * dirname = g_path_get_dirname(text); | ||
140 | + g_autofree gchar * basename = g_path_get_basename(text); | ||
147 | 141 | ||
148 | - const gchar * extension = strrchr(text,'.'); | 142 | + gtk_widget_set_sensitive(button,g_file_test(dirname,G_FILE_TEST_IS_DIR) && *basename && (*basename != '.')); |
143 | + | ||
144 | + debug("*************[%s]***********",basename); | ||
145 | + | ||
146 | + const gchar * extension = strrchr(basename,'.'); | ||
149 | if(!extension) | 147 | if(!extension) |
150 | return; | 148 | return; |
151 | 149 | ||
152 | extension++; | 150 | extension++; |
153 | - const gchar * format = gtk_combo_box_get_active_id(formats); | 151 | + const gchar * format = gtk_combo_box_get_active_id(dialog->format); |
154 | if(*format == '.') | 152 | if(*format == '.') |
155 | format++; | 153 | format++; |
156 | 154 | ||
157 | if(g_ascii_strcasecmp(extension,format) == 0) | 155 | if(g_ascii_strcasecmp(extension,format) == 0) |
158 | return; | 156 | return; |
159 | 157 | ||
160 | - gint column = gtk_combo_box_get_id_column(formats); | ||
161 | - GtkTreeModel * model = gtk_combo_box_get_model(formats); | 158 | + gint column = gtk_combo_box_get_id_column(dialog->format); |
159 | + GtkTreeModel * model = gtk_combo_box_get_model(dialog->format); | ||
162 | GtkTreeIter iter; | 160 | GtkTreeIter iter; |
163 | 161 | ||
164 | debug("id_column=%d",column); | 162 | debug("id_column=%d",column); |
@@ -172,7 +170,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -172,7 +170,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
172 | 170 | ||
173 | if(g_ascii_strcasecmp(extension,id + (*id == '.' ? 1 : 0)) == 0) | 171 | if(g_ascii_strcasecmp(extension,id + (*id == '.' ? 1 : 0)) == 0) |
174 | { | 172 | { |
175 | - gtk_combo_box_set_active_iter(formats,&iter); | 173 | + gtk_combo_box_set_active_iter(dialog->format,&iter); |
176 | break; | 174 | break; |
177 | } | 175 | } |
178 | 176 | ||
@@ -228,7 +226,6 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -228,7 +226,6 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
228 | // Setup visual elements | 226 | // Setup visual elements |
229 | // https://developer.gnome.org/hig/stable/visual-layout.html.en | 227 | // https://developer.gnome.org/hig/stable/visual-layout.html.en |
230 | GtkWidget *widget; | 228 | GtkWidget *widget; |
231 | - GtkWidget *button; | ||
232 | 229 | ||
233 | GtkBox * box = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))); | 230 | GtkBox * box = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))); |
234 | gtk_window_set_resizable(GTK_WINDOW(dialog),FALSE); | 231 | gtk_window_set_resizable(GTK_WINDOW(dialog),FALSE); |
@@ -284,9 +281,9 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -284,9 +281,9 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
284 | gtk_widget_set_valign(widget,GTK_ALIGN_CENTER); | 281 | gtk_widget_set_valign(widget,GTK_ALIGN_CENTER); |
285 | gtk_grid_attach(grid,widget,2,1,1,1); | 282 | gtk_grid_attach(grid,widget,2,1,1,1); |
286 | 283 | ||
287 | - dialog->format = gtk_combo_box_text_new(); | 284 | + dialog->format = GTK_COMBO_BOX(gtk_combo_box_text_new()); |
288 | 285 | ||
289 | - gtk_grid_attach(grid,dialog->format,3,1,1,1); | 286 | + gtk_grid_attach(grid,GTK_WIDGET(dialog->format),3,1,1,1); |
290 | 287 | ||
291 | for(ix=0;ix<G_N_ELEMENTS(formats);ix++) | 288 | for(ix=0;ix<G_N_ELEMENTS(formats);ix++) |
292 | { | 289 | { |
@@ -320,7 +317,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -320,7 +317,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
320 | 317 | ||
321 | } | 318 | } |
322 | 319 | ||
323 | - g_signal_connect(dialog->filename,"changed",G_CALLBACK(filename_changed),dialog->format); | 320 | + g_signal_connect(dialog->filename,"changed",G_CALLBACK(filename_changed),dialog); |
324 | g_signal_connect(dialog->format,"changed",G_CALLBACK(fileformat_changed),dialog->filename); | 321 | g_signal_connect(dialog->format,"changed",G_CALLBACK(fileformat_changed),dialog->filename); |
325 | 322 | ||
326 | } | 323 | } |
@@ -328,41 +325,19 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -328,41 +325,19 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
328 | 325 | ||
329 | // Buttons | 326 | // Buttons |
330 | // https://developer.gnome.org/icon-naming-spec/ | 327 | // https://developer.gnome.org/icon-naming-spec/ |
331 | -#ifdef _WIN32 | ||
332 | - widget = NULL; | ||
333 | -#elif GTK_CHECK_VERSION(3,14,0) | ||
334 | - widget = gtk_dialog_get_header_bar(GTK_DIALOG(dialog)); | ||
335 | -#else | ||
336 | - widget = NULL; | ||
337 | -#endif // GTK(3,14,0) | ||
338 | - | ||
339 | - if(widget) | ||
340 | - { | ||
341 | - // Have header bar | ||
342 | - button = gtk_button_new_with_mnemonic(_("_Cancel")); | ||
343 | - gtk_widget_set_tooltip_markup(button,_("Click to cancel operation")); | ||
344 | - gtk_header_bar_pack_start(GTK_HEADER_BAR(widget),button); | ||
345 | - g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(cancel_operation),dialog); | ||
346 | - | ||
347 | - button = gtk_button_new_with_mnemonic(_("_Save")); | ||
348 | - gtk_widget_set_tooltip_markup(button,_("Click to save file")); | ||
349 | - gtk_header_bar_pack_end(GTK_HEADER_BAR(widget),button); | ||
350 | - g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(apply_operation),dialog); | 328 | + gtk_dialog_add_buttons( |
329 | + GTK_DIALOG (dialog), | ||
330 | + _("_Cancel"), GTK_RESPONSE_CANCEL, | ||
331 | + _("_Save"), GTK_RESPONSE_APPLY, | ||
332 | + NULL | ||
333 | + ); | ||
334 | + | ||
335 | + if(!v3270_dialog_get_use_header()) { | ||
336 | + GtkWidget * content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); | ||
337 | + gtk_box_set_spacing(GTK_BOX(content_area),3); | ||
351 | } | 338 | } |
352 | - else | ||
353 | - { | ||
354 | - gtk_box_set_spacing( | ||
355 | - GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), | ||
356 | - 18 | ||
357 | - ); | ||
358 | 339 | ||
359 | - gtk_dialog_add_buttons( | ||
360 | - GTK_DIALOG (dialog), | ||
361 | - _("_Cancel"), GTK_RESPONSE_CANCEL, | ||
362 | - _("_Save"), GTK_RESPONSE_APPLY, | ||
363 | - NULL | ||
364 | - ); | ||
365 | - } | 340 | + gtk_widget_set_sensitive(gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog),GTK_RESPONSE_APPLY),FALSE); |
366 | 341 | ||
367 | } | 342 | } |
368 | 343 | ||
@@ -377,14 +352,11 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -377,14 +352,11 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
377 | N_("Save copy"), | 352 | N_("Save copy"), |
378 | }; | 353 | }; |
379 | 354 | ||
380 | - gboolean use_header; | ||
381 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
382 | - | ||
383 | // Create dialog | 355 | // Create dialog |
384 | V3270SaveDialog * dialog = V3270_SAVE_DIALOG( | 356 | V3270SaveDialog * dialog = V3270_SAVE_DIALOG( |
385 | g_object_new( | 357 | g_object_new( |
386 | GTK_TYPE_V3270SaveDialog, | 358 | GTK_TYPE_V3270SaveDialog, |
387 | - "use-header-bar", (use_header ? 1 : 0), | 359 | + "use-header-bar", v3270_dialog_get_use_header() ? 1 : 0, |
388 | NULL) | 360 | NULL) |
389 | ); | 361 | ); |
390 | 362 |
src/dialogs/security.c
@@ -215,12 +215,10 @@ | @@ -215,12 +215,10 @@ | ||
215 | 215 | ||
216 | #if GTK_CHECK_VERSION(3,12,0) | 216 | #if GTK_CHECK_VERSION(3,12,0) |
217 | 217 | ||
218 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
219 | - | ||
220 | GtkWidget * dialog = | 218 | GtkWidget * dialog = |
221 | GTK_WIDGET(g_object_new( | 219 | GTK_WIDGET(g_object_new( |
222 | GTK_TYPE_DIALOG, | 220 | GTK_TYPE_DIALOG, |
223 | - "use-header-bar", (use_header ? 1 : 0), | 221 | + "use-header-bar", (v3270_dialog_get_use_header() ? 1 : 0), |
224 | NULL | 222 | NULL |
225 | )); | 223 | )); |
226 | 224 |
src/dialogs/settings/dialog.c
@@ -48,19 +48,6 @@ | @@ -48,19 +48,6 @@ | ||
48 | 48 | ||
49 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 49 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
50 | 50 | ||
51 | -/* | ||
52 | -static gboolean on_tab_focus(V3270Settings *settings, GdkEvent G_GNUC_UNUSED(*event), V3270SettingsDialog *dialog) | ||
53 | -{ | ||
54 | - debug("title: %s",settings->title); | ||
55 | - debug("label: %s",settings->label); | ||
56 | - | ||
57 | - if(settings->title) | ||
58 | - gtk_window_set_title(dialog,settings->title); | ||
59 | - | ||
60 | - return FALSE; | ||
61 | -} | ||
62 | -*/ | ||
63 | - | ||
64 | static void on_switch_page(GtkNotebook G_GNUC_UNUSED(*notebook), V3270Settings *settings, guint G_GNUC_UNUSED(page_num), V3270SettingsDialog *dialog) | 51 | static void on_switch_page(GtkNotebook G_GNUC_UNUSED(*notebook), V3270Settings *settings, guint G_GNUC_UNUSED(page_num), V3270SettingsDialog *dialog) |
65 | { | 52 | { |
66 | debug("title: %s",settings->title); | 53 | debug("title: %s",settings->title); |
@@ -215,15 +202,9 @@ static void V3270SettingsDialog_init(V3270SettingsDialog *dialog) | @@ -215,15 +202,9 @@ static void V3270SettingsDialog_init(V3270SettingsDialog *dialog) | ||
215 | GtkWidget * content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); | 202 | GtkWidget * content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); |
216 | 203 | ||
217 | // Get use of header bar. | 204 | // Get use of header bar. |
218 | -#ifndef _WIN32 | ||
219 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &dialog->has_subtitle, NULL); | ||
220 | -#endif // _WIN32 | ||
221 | - | ||
222 | - // https://developer.gnome.org/hig/stable/visual-layout.html.en | ||
223 | - //gtk_box_set_spacing(GTK_BOX(content_area),18); | ||
224 | - //gtk_container_set_border_width(GTK_CONTAINER(content_area),18); | 205 | + dialog->has_subtitle = v3270_dialog_get_use_header(); |
225 | 206 | ||
226 | -// gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE); | 207 | + gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE); |
227 | gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); | 208 | gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); |
228 | 209 | ||
229 | gtk_dialog_add_buttons( | 210 | gtk_dialog_add_buttons( |
@@ -236,11 +217,6 @@ static void V3270SettingsDialog_init(V3270SettingsDialog *dialog) | @@ -236,11 +217,6 @@ static void V3270SettingsDialog_init(V3270SettingsDialog *dialog) | ||
236 | // Create notebook for settings widgets | 217 | // Create notebook for settings widgets |
237 | dialog->tabs = GTK_NOTEBOOK(gtk_notebook_new()); | 218 | dialog->tabs = GTK_NOTEBOOK(gtk_notebook_new()); |
238 | 219 | ||
239 | -#ifdef _WIN32 | ||
240 | - gtk_widget_set_margin_bottom(GTK_WIDGET(dialog->tabs),3); | ||
241 | -// gtk_notebook_set_show_border(dialog->tabs, TRUE); | ||
242 | -#endif // _WIN32 | ||
243 | - | ||
244 | gtk_notebook_set_scrollable(dialog->tabs,TRUE); | 220 | gtk_notebook_set_scrollable(dialog->tabs,TRUE); |
245 | gtk_notebook_set_show_tabs(dialog->tabs,FALSE); | 221 | gtk_notebook_set_show_tabs(dialog->tabs,FALSE); |
246 | g_signal_connect(G_OBJECT(dialog->tabs), "page-added", G_CALLBACK(on_page_changed), dialog); | 222 | g_signal_connect(G_OBJECT(dialog->tabs), "page-added", G_CALLBACK(on_page_changed), dialog); |
@@ -248,29 +224,20 @@ static void V3270SettingsDialog_init(V3270SettingsDialog *dialog) | @@ -248,29 +224,20 @@ static void V3270SettingsDialog_init(V3270SettingsDialog *dialog) | ||
248 | g_signal_connect(G_OBJECT(dialog->tabs), "switch-page", G_CALLBACK(on_switch_page), dialog); | 224 | g_signal_connect(G_OBJECT(dialog->tabs), "switch-page", G_CALLBACK(on_switch_page), dialog); |
249 | gtk_box_pack_start(GTK_BOX(content_area),GTK_WIDGET(dialog->tabs),TRUE,TRUE,0); | 225 | gtk_box_pack_start(GTK_BOX(content_area),GTK_WIDGET(dialog->tabs),TRUE,TRUE,0); |
250 | 226 | ||
251 | - | 227 | + if(!dialog->has_subtitle) { |
228 | + gtk_box_set_spacing(GTK_BOX(content_area),3); | ||
229 | + gtk_widget_set_margin_bottom(content_area,3); | ||
230 | + } | ||
252 | } | 231 | } |
253 | 232 | ||
254 | GtkWidget * v3270_settings_dialog_new() | 233 | GtkWidget * v3270_settings_dialog_new() |
255 | { | 234 | { |
256 | -#ifdef _WIN32 | ||
257 | - | ||
258 | - GtkWidget * dialog = | ||
259 | - GTK_WIDGET(g_object_new( | ||
260 | - GTK_TYPE_V3270_SETTINGS_DIALOG, | ||
261 | - "use-header-bar", FALSE, | ||
262 | - NULL | ||
263 | - )); | ||
264 | - | ||
265 | -#elif GTK_CHECK_VERSION(3,12,0) | ||
266 | - | ||
267 | - gboolean use_header; | ||
268 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | 235 | +#if GTK_CHECK_VERSION(3,12,0) |
269 | 236 | ||
270 | GtkWidget * dialog = | 237 | GtkWidget * dialog = |
271 | GTK_WIDGET(g_object_new( | 238 | GTK_WIDGET(g_object_new( |
272 | GTK_TYPE_V3270_SETTINGS_DIALOG, | 239 | GTK_TYPE_V3270_SETTINGS_DIALOG, |
273 | - "use-header-bar", (use_header ? 1 : 0), | 240 | + "use-header-bar", (v3270_dialog_get_use_header() ? 1 : 0), |
274 | NULL | 241 | NULL |
275 | )); | 242 | )); |
276 | 243 |
src/dialogs/tools.c
@@ -216,4 +216,22 @@ | @@ -216,4 +216,22 @@ | ||
216 | 216 | ||
217 | } | 217 | } |
218 | 218 | ||
219 | + gboolean v3270_dialog_get_use_header() { | ||
220 | + | ||
221 | +#ifdef DEBUG | ||
222 | + return FALSE; | ||
223 | +#endif // DEBUG | ||
224 | + | ||
225 | +#ifdef _WIN32 | ||
226 | + return FALSE; | ||
227 | +#elif GTK_CHECK_VERSION(3,12,0) | ||
228 | + gboolean use_header; | ||
229 | + g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
230 | + return use_header; | ||
231 | +#else | ||
232 | + return FALSE; | ||
233 | +#endif // _WIN32 | ||
234 | + | ||
235 | + } | ||
236 | + | ||
219 | 237 |
src/dialogs/transfer.c
@@ -126,12 +126,10 @@ LIB3270_EXPORT gint v3270_transfer_file(GtkWidget *widget, LIB3270_FT_OPTION opt | @@ -126,12 +126,10 @@ LIB3270_EXPORT gint v3270_transfer_file(GtkWidget *widget, LIB3270_FT_OPTION opt | ||
126 | 126 | ||
127 | #if GTK_CHECK_VERSION(3,12,0) | 127 | #if GTK_CHECK_VERSION(3,12,0) |
128 | 128 | ||
129 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
130 | - | ||
131 | GtkWidget * dialog = | 129 | GtkWidget * dialog = |
132 | GTK_WIDGET(g_object_new( | 130 | GTK_WIDGET(g_object_new( |
133 | GTK_TYPE_DIALOG, | 131 | GTK_TYPE_DIALOG, |
134 | - "use-header-bar", (use_header ? 1 : 0), | 132 | + "use-header-bar", (v3270_dialog_get_use_header() ? 1 : 0), |
135 | NULL | 133 | NULL |
136 | )); | 134 | )); |
137 | 135 |
src/filetransfer/v3270ft.c
@@ -726,13 +726,10 @@ LIB3270_EXPORT GtkWidget * v3270ft_new(GtkWidget *parent) { | @@ -726,13 +726,10 @@ LIB3270_EXPORT GtkWidget * v3270ft_new(GtkWidget *parent) { | ||
726 | 726 | ||
727 | #if GTK_CHECK_VERSION(3,12,0) | 727 | #if GTK_CHECK_VERSION(3,12,0) |
728 | 728 | ||
729 | - gboolean use_header; | ||
730 | - g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
731 | - | ||
732 | GtkWidget * dialog = | 729 | GtkWidget * dialog = |
733 | GTK_WIDGET(g_object_new( | 730 | GTK_WIDGET(g_object_new( |
734 | GTK_TYPE_V3270FT, | 731 | GTK_TYPE_V3270FT, |
735 | - "use-header-bar", (use_header ? 1 : 0), | 732 | + "use-header-bar", (v3270_dialog_get_use_header() ? 1 : 0), |
736 | NULL | 733 | NULL |
737 | )); | 734 | )); |
738 | 735 |
src/include/internals.h
@@ -193,6 +193,8 @@ | @@ -193,6 +193,8 @@ | ||
193 | G_GNUC_INTERNAL GtkHeaderBar * v3270_dialog_get_header_bar(GtkWidget * widget); | 193 | G_GNUC_INTERNAL GtkHeaderBar * v3270_dialog_get_header_bar(GtkWidget * widget); |
194 | #endif // ! GTK 3.12 | 194 | #endif // ! GTK 3.12 |
195 | 195 | ||
196 | + G_GNUC_INTERNAL gboolean v3270_dialog_get_use_header(); | ||
197 | + | ||
196 | G_GNUC_INTERNAL void v3270_grid_attach(GtkGrid *grid, const struct v3270_entry_field * description, GtkWidget *widget); | 198 | G_GNUC_INTERNAL void v3270_grid_attach(GtkGrid *grid, const struct v3270_entry_field * description, GtkWidget *widget); |
197 | 199 | ||
198 | // Toggle button widget | 200 | // Toggle button widget |