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 |