Commit 4f0a5e997f6cd503e0bf6e9154a682169134f80e
1 parent
7daf2ea7
Exists in
master
and in
1 other branch
Adding method to vinculate dialog with toplevel, preserving the icon.
Showing
17 changed files
with
86 additions
and
17 deletions
Show diff stats
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 |
@@ -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 |
v3270.cbp
@@ -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> |