Commit 4f0a5e997f6cd503e0bf6e9154a682169134f80e

Authored by Perry Werneck
1 parent 7daf2ea7
Exists in master and in 1 other branch develop

Adding method to vinculate dialog with toplevel, preserving the icon.

src/dialogs/dialog.c
@@ -80,9 +80,9 @@ @@ -80,9 +80,9 @@
80 // Setup window 80 // Setup window
81 gtk_window_set_title(GTK_WINDOW(dialog),title); 81 gtk_window_set_title(GTK_WINDOW(dialog),title);
82 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); 82 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
83 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(widget)));  
84 - gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);  
85 83
  84 + gtk_dialog_set_toplevel(dialog,widget);
  85 + gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);
86 86
87 g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL); 87 g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL);
88 88
src/dialogs/load.c
@@ -246,7 +246,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ @@ -246,7 +246,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
246 if(filename && *filename) 246 if(filename && *filename)
247 gtk_entry_set_text(GTK_ENTRY(dialog->filename),filename); 247 gtk_entry_set_text(GTK_ENTRY(dialog->filename),filename);
248 248
249 - gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(widget))); 249 + gtk_dialog_set_toplevel(GTK_WIDGET(dialog),widget);
250 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); 250 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
251 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); 251 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
252 252
src/dialogs/print/settingsdialog.c
@@ -463,7 +463,7 @@ LIB3270_EXPORT GtkWidget * v3270_ft_settings_dialog_new(GtkWidget *parent) @@ -463,7 +463,7 @@ LIB3270_EXPORT GtkWidget * v3270_ft_settings_dialog_new(GtkWidget *parent)
463 463
464 if(parent) 464 if(parent)
465 { 465 {
466 - gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(parent))); 466 + gtk_dialog_set_toplevel(dialog,parent);
467 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); 467 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
468 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); 468 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
469 } 469 }
src/dialogs/save/save.c
@@ -386,7 +386,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ @@ -386,7 +386,7 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
386 gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE); 386 gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE);
387 #endif // G_OS_UNIX 387 #endif // G_OS_UNIX
388 388
389 - gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(widget))); 389 + gtk_dialog_set_toplevel(dialog,widget);
390 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); 390 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
391 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); 391 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
392 392
src/dialogs/security.c
@@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
36 #include <glib/gi18n-lib.h> 36 #include <glib/gi18n-lib.h>
37 #include <internals.h> 37 #include <internals.h>
38 #include <lib3270/ssl.h> 38 #include <lib3270/ssl.h>
  39 + #include <v3270/tools.h>
39 40
40 #include <v3270.h> 41 #include <v3270.h>
41 42
@@ -237,7 +238,7 @@ @@ -237,7 +238,7 @@
237 238
238 gtk_window_set_title(GTK_WINDOW(dialog),_("About security")); 239 gtk_window_set_title(GTK_WINDOW(dialog),_("About security"));
239 gtk_window_set_default_size(GTK_WINDOW(dialog), 800, 500); 240 gtk_window_set_default_size(GTK_WINDOW(dialog), 800, 500);
240 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(widget))); 241 + gtk_dialog_set_toplevel(dialog,widget);
241 gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); 242 gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);
242 243
243 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),v3270_security_dialog_new(widget),TRUE,TRUE,2); 244 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),v3270_security_dialog_new(widget),TRUE,TRUE,2);
src/dialogs/settings/dialog.c
@@ -344,7 +344,7 @@ void v3270_settings_popup_dialog(GtkWidget *widget, GtkWidget *terminal, gboolea @@ -344,7 +344,7 @@ void v3270_settings_popup_dialog(GtkWidget *widget, GtkWidget *terminal, gboolea
344 gtk_window_set_title(GTK_WINDOW(dialog),settings->title); 344 gtk_window_set_title(GTK_WINDOW(dialog),settings->title);
345 345
346 gtk_container_add(GTK_CONTAINER(dialog), widget); 346 gtk_container_add(GTK_CONTAINER(dialog), widget);
347 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(terminal))); 347 + gtk_dialog_set_toplevel(dialog,terminal);
348 348
349 gtk_window_set_modal(GTK_WINDOW(dialog),modal); 349 gtk_window_set_modal(GTK_WINDOW(dialog),modal);
350 350
@@ -368,7 +368,7 @@ GtkWidget * v3270_settings_get_edit_dialog(GtkWidget *settings, GtkWidget *termi @@ -368,7 +368,7 @@ GtkWidget * v3270_settings_get_edit_dialog(GtkWidget *settings, GtkWidget *termi
368 368
369 gtk_container_add(GTK_CONTAINER(dialog), settings); 369 gtk_container_add(GTK_CONTAINER(dialog), settings);
370 370
371 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(terminal))); 371 + gtk_dialog_set_toplevel(dialog,terminal);
372 gtk_window_set_modal(GTK_WINDOW(dialog),modal); 372 gtk_window_set_modal(GTK_WINDOW(dialog),modal);
373 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); 373 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
374 374
src/dialogs/settings/host.c
@@ -599,7 +599,7 @@ LIB3270_EXPORT void v3270_select_host(GtkWidget *widget) @@ -599,7 +599,7 @@ LIB3270_EXPORT void v3270_select_host(GtkWidget *widget)
599 gtk_window_set_title(GTK_WINDOW(dialog), v3270_settings_get_title(settings)); 599 gtk_window_set_title(GTK_WINDOW(dialog), v3270_settings_get_title(settings));
600 gtk_container_add(GTK_CONTAINER(dialog), settings); 600 gtk_container_add(GTK_CONTAINER(dialog), settings);
601 601
602 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(widget))); 602 + gtk_dialog_set_toplevel(dialog,widget);
603 gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); 603 gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);
604 604
605 v3270_settings_dialog_set_terminal_widget(dialog, widget); 605 v3270_settings_dialog_set_terminal_widget(dialog, widget);
src/dialogs/transfer.c
@@ -188,7 +188,7 @@ LIB3270_EXPORT gint v3270_transfer_file(GtkWidget *widget, LIB3270_FT_OPTION opt @@ -188,7 +188,7 @@ LIB3270_EXPORT gint v3270_transfer_file(GtkWidget *widget, LIB3270_FT_OPTION opt
188 g_signal_connect(save_button,"clicked",G_CALLBACK(save_activity_clicked),activity); 188 g_signal_connect(save_button,"clicked",G_CALLBACK(save_activity_clicked),activity);
189 } 189 }
190 190
191 - gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(widget))); 191 + gtk_dialog_set_toplevel(dialog,widget);
192 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); 192 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
193 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); 193 gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
194 194
src/filetransfer/transfer.c
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
30 30
31 #include <v3270.h> 31 #include <v3270.h>
32 #include "private.h" 32 #include "private.h"
  33 + #include <v3270/tools.h>
33 34
34 35
35 /*--[ Statics ]--------------------------------------------------------------------------------------*/ 36 /*--[ Statics ]--------------------------------------------------------------------------------------*/
@@ -138,8 +139,7 @@ LIB3270_EXPORT gint v3270ft_transfer(GtkWidget *dialog, H3270 *session) { @@ -138,8 +139,7 @@ LIB3270_EXPORT gint v3270ft_transfer(GtkWidget *dialog, H3270 *session) {
138 GtkWidget * progress = v3270ftprogress_new(); 139 GtkWidget * progress = v3270ftprogress_new();
139 gint rc = GTK_RESPONSE_NONE; 140 gint rc = GTK_RESPONSE_NONE;
140 141
141 - gtk_window_set_transient_for(GTK_WINDOW(progress),GTK_WINDOW(dialog));  
142 -// gtk_window_set_deletable(progress,FALSE); 142 + gtk_dialog_set_toplevel(progress,dialog);
143 143
144 v3270ft_select_first(dialog); 144 v3270ft_select_first(dialog);
145 v3270ftprogress_set_session(progress,session); 145 v3270ftprogress_set_session(progress,session);
src/filetransfer/v3270ft.c
@@ -37,6 +37,7 @@ @@ -37,6 +37,7 @@
37 37
38 #include <limits.h> 38 #include <limits.h>
39 #include <internals.h> 39 #include <internals.h>
  40 + #include <v3270/tools.h>
40 41
41 #include "private.h" 42 #include "private.h"
42 43
@@ -743,7 +744,7 @@ LIB3270_EXPORT GtkWidget * v3270ft_new(GtkWidget *parent) { @@ -743,7 +744,7 @@ LIB3270_EXPORT GtkWidget * v3270ft_new(GtkWidget *parent) {
743 744
744 #endif 745 #endif
745 746
746 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(parent))); 747 + gtk_dialog_set_toplevel(dialog,parent);
747 748
748 return dialog; 749 return dialog;
749 } 750 }
src/include/v3270/tools.h
@@ -43,6 +43,10 @@ @@ -43,6 +43,10 @@
43 /// @brief Bind file chooser with entry field. 43 /// @brief Bind file chooser with entry field.
44 LIB3270_EXPORT void gtk_entry_bind_to_filechooser(GtkWidget *widget, GtkFileChooserAction action, const gchar *title, const gchar *icon_name, const gchar *pattern, const gchar *name); 44 LIB3270_EXPORT void gtk_entry_bind_to_filechooser(GtkWidget *widget, GtkFileChooserAction action, const gchar *title, const gchar *icon_name, const gchar *pattern, const gchar *name);
45 45
  46 + /// @brief Bind dialog with toplevel
  47 + LIB3270_EXPORT void gtk_dialog_set_toplevel(GtkWidget *dialog, GtkWidget *widget);
  48 +
  49 +
46 G_END_DECLS 50 G_END_DECLS
47 51
48 #endif // V3270_TOOLS_H_INCLUDED 52 #endif // V3270_TOOLS_H_INCLUDED
src/terminal/actions.c
@@ -71,7 +71,7 @@ void v3270_activate(GtkWidget *widget) { @@ -71,7 +71,7 @@ void v3270_activate(GtkWidget *widget) {
71 gtk_container_add(GTK_CONTAINER(dialog), v3270_host_settings_new()); 71 gtk_container_add(GTK_CONTAINER(dialog), v3270_host_settings_new());
72 gtk_window_set_title(GTK_WINDOW(dialog),_("Setup host properties")); 72 gtk_window_set_title(GTK_WINDOW(dialog),_("Setup host properties"));
73 73
74 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(widget))); 74 + gtk_dialog_set_toplevel(dialog,widget);
75 75
76 v3270_settings_dialog_set_terminal_widget(dialog, widget); 76 v3270_settings_dialog_set_terminal_widget(dialog, widget);
77 g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL); 77 g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL);
src/terminal/actions/dialog.c
@@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
36 #include <v3270.h> 36 #include <v3270.h>
37 #include <v3270/settings.h> 37 #include <v3270/settings.h>
38 #include <v3270/actions.h> 38 #include <v3270/actions.h>
  39 + #include <v3270/tools.h>
39 40
40 #define V3270_TYPE_DIALOG_ACTION (V3270DialogAction_get_type()) 41 #define V3270_TYPE_DIALOG_ACTION (V3270DialogAction_get_type())
41 #define V3270_DIALOG_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), V3270_TYPE_DIALOG_ACTION, V3270DialogAction)) 42 #define V3270_DIALOG_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), V3270_TYPE_DIALOG_ACTION, V3270DialogAction))
@@ -125,8 +126,9 @@ @@ -125,8 +126,9 @@
125 126
126 GtkWidget * window = gtk_widget_get_toplevel(terminal); 127 GtkWidget * window = gtk_widget_get_toplevel(terminal);
127 if(window) { 128 if(window) {
  129 + gtk_dialog_set_toplevel(action->dialog,window);
128 gtk_window_set_attached_to(GTK_WINDOW(action->dialog), window); 130 gtk_window_set_attached_to(GTK_WINDOW(action->dialog), window);
129 - gtk_window_set_transient_for(GTK_WINDOW(action->dialog),GTK_WINDOW(window)); 131 + gtk_dialog_set_toplevel(action->dialog,window);
130 } 132 }
131 133
132 g_signal_connect(action->dialog,"destroy",G_CALLBACK(on_destroy),action); 134 g_signal_connect(action->dialog,"destroy",G_CALLBACK(on_destroy),action);
src/testprogram/toolbar.c
@@ -87,7 +87,7 @@ @@ -87,7 +87,7 @@
87 gtk_container_add(GTK_CONTAINER(dialog), widgets[ix]); 87 gtk_container_add(GTK_CONTAINER(dialog), widgets[ix]);
88 } 88 }
89 89
90 - gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(terminal))); 90 + gtk_dialog_set_toplevel(dialog,terminal);
91 91
92 v3270_settings_dialog_set_terminal_widget(dialog, terminal); 92 v3270_settings_dialog_set_terminal_widget(dialog, terminal);
93 93
src/tools/dialog.c 0 → 100644
@@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como - e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 + /**
  31 + * @brief Usefull extensions for GtkDialog.
  32 + *
  33 + */
  34 +
  35 + #include <internals.h>
  36 + #include <v3270/tools.h>
  37 + #include <string.h>
  38 +
  39 + LIB3270_EXPORT void gtk_dialog_set_toplevel(GtkWidget *dialog, GtkWidget *widget) {
  40 +
  41 + if(widget) {
  42 +
  43 + GtkWidget * toplevel = GTK_WINDOW(gtk_widget_get_toplevel(widget));
  44 +
  45 + gtk_window_set_transient_for(
  46 + GTK_WINDOW(dialog),
  47 + toplevel
  48 + );
  49 +
  50 + gtk_window_set_icon(
  51 + GTK_WINDOW(dialog),
  52 + gtk_window_get_icon(toplevel)
  53 + );
  54 +
  55 + }
  56 +
  57 + }
src/trace/tracewindow.c
@@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@
38 38
39 #include <config.h> 39 #include <config.h>
40 #include <gtk/gtk.h> 40 #include <gtk/gtk.h>
  41 + #include <v3270/tools.h>
41 42
42 #define ENABLE_NLS 43 #define ENABLE_NLS
43 44
@@ -89,7 +90,7 @@ @@ -89,7 +90,7 @@
89 GtkWidget * vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0); 90 GtkWidget * vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
90 GtkWidget * trace = v3270_trace_new(widget); 91 GtkWidget * trace = v3270_trace_new(widget);
91 92
92 - gtk_window_set_transient_for(GTK_WINDOW(window),GTK_WINDOW(gtk_widget_get_toplevel(widget))); 93 + gtk_dialog_set_toplevel(window,widget);
93 gtk_window_set_destroy_with_parent(GTK_WINDOW(window),TRUE); 94 gtk_window_set_destroy_with_parent(GTK_WINDOW(window),TRUE);
94 95
95 // Set window title and default size 96 // Set window title and default size
@@ -409,6 +409,9 @@ @@ -409,6 +409,9 @@
409 <Unit filename="src/testprogram/toolbar.c"> 409 <Unit filename="src/testprogram/toolbar.c">
410 <Option compilerVar="CC" /> 410 <Option compilerVar="CC" />
411 </Unit> 411 </Unit>
  412 + <Unit filename="src/tools/dialog.c">
  413 + <Option compilerVar="CC" />
  414 + </Unit>
412 <Unit filename="src/tools/entry.c"> 415 <Unit filename="src/tools/entry.c">
413 <Option compilerVar="CC" /> 416 <Option compilerVar="CC" />
414 </Unit> 417 </Unit>