Thread: [gq-commit] gq/src mainwin.c,1.46,1.47 prefs.c,1.45,1.46 prefs.h,1.8,1.9 ref-browse.c,1.3,1.4 server
Status: Beta
Brought to you by:
sur5r
From: <sta...@us...> - 2003-10-19 15:00:31
|
Update of /cvsroot/gqclient/gq/src In directory sc8-pr-cvs1:/tmp/cvs-serv31974 Modified Files: mainwin.c prefs.c prefs.h ref-browse.c server-browse.c Log Message: * Made some windows modal and transient, that is if certain windows are visible, no operations can be done in "parent" windows. This makes a lot of sense for Windows where (global) options can be edited. Otherwise it is not clear which setting is active when. Index: mainwin.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/mainwin.c,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** mainwin.c 17 Oct 2003 07:19:22 -0000 1.46 --- mainwin.c 19 Oct 2003 12:01:31 -0000 1.47 *************** *** 382,388 **** gtk_widget_show(menuitem); gtk_container_add(GTK_CONTAINER(menuFile), menuitem); ! gtk_signal_connect(GTK_OBJECT(menuitem), "activate", ! GTK_SIGNAL_FUNC(create_prefs_window), ! NULL); gtk_widget_add_accelerator(menuitem, "activate", accel_group, 'P', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); --- 382,388 ---- gtk_widget_show(menuitem); gtk_container_add(GTK_CONTAINER(menuFile), menuitem); ! gtk_signal_connect_object(GTK_OBJECT(menuitem), "activate", ! GTK_SIGNAL_FUNC(create_prefs_window), ! (gpointer) win); gtk_widget_add_accelerator(menuitem, "activate", accel_group, 'P', GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); Index: prefs.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/prefs.c,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** prefs.c 18 Oct 2003 08:26:59 -0000 1.45 --- prefs.c 19 Oct 2003 12:01:31 -0000 1.46 *************** *** 404,408 **** ! void create_edit_server_window(struct ldapserver *server) { GtkWidget *editwindow, *notebook; --- 404,409 ---- ! void create_edit_server_window(struct ldapserver *server, ! GtkWidget *modalFor) { GtkWidget *editwindow, *notebook; *************** *** 456,461 **** #endif sw->editwindow = editwindow; - current_edit_server_window = editwindow; gtk_object_set_data_full(GTK_OBJECT(editwindow), "cb_data", --- 457,469 ---- #endif sw->editwindow = editwindow; current_edit_server_window = editwindow; + + if (modalFor) { + assert(GTK_IS_WINDOW(modalFor)); + gtk_window_set_modal(GTK_WINDOW(editwindow), TRUE); + gtk_window_set_transient_for(GTK_WINDOW(editwindow), + GTK_WINDOW(modalFor)); + } + gtk_object_set_data_full(GTK_OBJECT(editwindow), "cb_data", *************** *** 1080,1084 **** void serverstab_newbutton_callback(GtkWidget *widget, struct prefs_windata *pw) { ! create_edit_server_window(NULL); } --- 1088,1092 ---- void serverstab_newbutton_callback(GtkWidget *widget, struct prefs_windata *pw) { ! create_edit_server_window(NULL, pw->prefswindow); } *************** *** 1095,1099 **** row); /* quietly ignore editbutton if no server selected */ ! if(server) create_edit_server_window(server); } } --- 1103,1107 ---- row); /* quietly ignore editbutton if no server selected */ ! if(server) create_edit_server_window(server, pw->prefswindow); } } *************** *** 1101,1105 **** static void server_selected_callback(GtkWidget *clist, gint row, gint column, ! GdkEventButton *event, gpointer data) { struct ldapserver *server; --- 1109,1114 ---- static void server_selected_callback(GtkWidget *clist, gint row, gint column, ! GdkEventButton *event, ! struct prefs_windata *pw) { struct ldapserver *server; *************** *** 1111,1115 **** if(event->type == GDK_2BUTTON_PRESS) { server = gtk_clist_get_row_data(GTK_CLIST(clist), row); ! create_edit_server_window(server); } } --- 1120,1124 ---- if(event->type == GDK_2BUTTON_PRESS) { server = gtk_clist_get_row_data(GTK_CLIST(clist), row); ! create_edit_server_window(server, pw->prefswindow); } } *************** *** 1227,1231 **** ! void create_prefs_window(void) { GtkWidget *label, *vbox2; --- 1236,1240 ---- ! void create_prefs_window(struct mainwin_data *win) { GtkWidget *label, *vbox2; *************** *** 1255,1258 **** --- 1264,1273 ---- pw->prefswindow = prefswindow; + assert(win); + + gtk_window_set_modal(GTK_WINDOW(prefswindow), TRUE); + gtk_window_set_transient_for(GTK_WINDOW(prefswindow), + GTK_WINDOW(win->mainwin)); + gtk_container_border_width(GTK_CONTAINER(prefswindow), CONTAINER_BORDER_WIDTH); *************** *** 1416,1420 **** gtk_signal_connect(GTK_OBJECT(server_clist), "select_row", ! GTK_SIGNAL_FUNC(server_selected_callback), NULL); gtk_signal_connect(GTK_OBJECT(server_clist), "unselect_row", GTK_SIGNAL_FUNC(server_unselected_callback), NULL); --- 1431,1435 ---- gtk_signal_connect(GTK_OBJECT(server_clist), "select_row", ! GTK_SIGNAL_FUNC(server_selected_callback), pw); gtk_signal_connect(GTK_OBJECT(server_clist), "unselect_row", GTK_SIGNAL_FUNC(server_unselected_callback), NULL); Index: prefs.h =================================================================== RCS file: /cvsroot/gqclient/gq/src/prefs.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** prefs.h 17 Oct 2003 07:16:14 -0000 1.8 --- prefs.h 19 Oct 2003 12:01:31 -0000 1.9 *************** *** 31,41 **** #include "common.h" /* fwd decl */ struct prefs_widgets; ! void create_edit_server_window(struct ldapserver *server); void fill_serverlist_serverstab(void); ! void create_prefs_window(void); #endif --- 31,43 ---- #include "common.h" + #include "mainwin.h" /* fwd decl */ struct prefs_widgets; ! void create_edit_server_window(struct ldapserver *server, ! GtkWidget *modalFor); void fill_serverlist_serverstab(void); ! void create_prefs_window(struct mainwin_data *win); #endif Index: ref-browse.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/ref-browse.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ref-browse.c 18 Oct 2003 08:26:59 -0000 1.3 --- ref-browse.c 19 Oct 2003 12:01:31 -0000 1.4 *************** *** 311,314 **** --- 311,331 ---- } + + struct edit_server_cb_data { + struct ldapserver *server; + struct tab *tab; + }; + + static void free_edit_server_cb_data(struct edit_server_cb_data *cbd) + { + ldapserver_unref(cbd->server); + g_free(cbd); + } + + static void edit_server_activated(struct edit_server_cb_data *cbd) + { + create_edit_server_window(cbd->server, cbd->tab->win->mainwin); + } + /* popup method for BOTH server AND ref entries (the same for now...) */ static void ref_browse_entry_popup(dn_browse_entry *entry, *************** *** 320,323 **** --- 337,341 ---- GtkWidget *menu_item; struct ldapserver *server; + struct edit_server_cb_data *cbd; assert(IS_REF_ENTRY(entry)); *************** *** 330,336 **** gtk_widget_show(menu_item); gtk_signal_connect_object(GTK_OBJECT(menu_item), "activate", ! GTK_SIGNAL_FUNC(create_edit_server_window), ! (gpointer) server); gtk_widget_show(menu_item); --- 348,365 ---- gtk_widget_show(menu_item); + cbd = (struct edit_server_cb_data *) + g_malloc0(sizeof(struct edit_server_cb_data)); + cbd->server = server; + cbd->tab = tab; + + ldapserver_ref(server); /* not strictly necessary, but ... */ + gtk_signal_connect_object(GTK_OBJECT(menu_item), "activate", ! GTK_SIGNAL_FUNC(edit_server_activated), ! (gpointer) cbd); ! ! /* explicitly attach cbd to assure call to destructor */ ! gtk_object_set_data_full(GTK_OBJECT(menu_item), "cbd", ! cbd, (GtkDestroyNotify)free_edit_server_cb_data); gtk_widget_show(menu_item); Index: server-browse.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/server-browse.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** server-browse.c 18 Oct 2003 08:27:00 -0000 1.2 --- server-browse.c 19 Oct 2003 12:01:32 -0000 1.3 *************** *** 2,6 **** GQ -- a GTK-based LDAP client Copyright (C) 1998-2003 Bert Vermeulen ! Parts: Copyright (C) 2002-2003 Peter Stamfest <pe...@st...> This program is released under the Gnu General Public License with --- 2,6 ---- GQ -- a GTK-based LDAP client Copyright (C) 1998-2003 Bert Vermeulen ! Copyright (C) 2002-2003 Peter Stamfest <pe...@st...> This program is released under the Gnu General Public License with *************** *** 495,499 **** --- 495,513 ---- } + struct edit_server_cb_data { + struct ldapserver *server; + struct tab *tab; + }; + static void free_edit_server_cb_data(struct edit_server_cb_data *cbd) + { + ldapserver_unref(cbd->server); + g_free(cbd); + } + + static void edit_server_activated(struct edit_server_cb_data *cbd) + { + create_edit_server_window(cbd->server, cbd->tab->win->mainwin); + } /* popup method for BOTH server AND ref entries (the same for now...) */ *************** *** 506,509 **** --- 520,524 ---- GtkWidget *menu_item; struct ldapserver *server; + struct edit_server_cb_data *cbd; assert(IS_SERVER_ENTRY(entry)); *************** *** 515,522 **** gtk_menu_append(GTK_MENU(menu), menu_item); gtk_widget_show(menu_item); ! gtk_signal_connect_object(GTK_OBJECT(menu_item), "activate", ! GTK_SIGNAL_FUNC(create_edit_server_window), ! (gpointer) server); gtk_widget_show(menu_item); --- 530,548 ---- gtk_menu_append(GTK_MENU(menu), menu_item); gtk_widget_show(menu_item); ! ! cbd = (struct edit_server_cb_data *) ! g_malloc0(sizeof(struct edit_server_cb_data)); ! cbd->server = server; ! cbd->tab = tab; ! ! ldapserver_ref(server); /* not strictly necessary, but ... */ ! gtk_signal_connect_object(GTK_OBJECT(menu_item), "activate", ! GTK_SIGNAL_FUNC(edit_server_activated), ! (gpointer) cbd); ! ! /* explicitly attach cbd to assure call to destructor */ ! gtk_object_set_data_full(GTK_OBJECT(menu_item), "cbd", ! cbd, (GtkDestroyNotify)free_edit_server_cb_data); gtk_widget_show(menu_item); |