[gq-commit] gq/src browse-dnd.c,1.17,1.18 browse.c,1.86,1.87 browse.h,1.34,1.35
Status: Beta
Brought to you by:
sur5r
From: <sta...@us...> - 2003-10-22 04:16:42
|
Update of /cvsroot/gqclient/gq/src In directory sc8-pr-cvs1:/tmp/cvs-serv18416 Modified Files: browse-dnd.c browse.c browse.h Log Message: * HACK: suppress extensive flickering with drag and drop Index: browse-dnd.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/browse-dnd.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** browse-dnd.c 17 Oct 2003 10:20:34 -0000 1.17 --- browse-dnd.c 21 Oct 2003 20:58:27 -0000 1.18 *************** *** 1,8 **** /* GQ -- a GTK-based LDAP client is ! Copyright (C) 1998-2001 Bert Vermeulen ! ! This file (browse-dnd.c) is ! Copyright (C) 2002 by Peter Stamfest <pe...@st...> This program is released under the Gnu General Public License with --- 1,6 ---- /* GQ -- a GTK-based LDAP client is ! Copyright (C) 1998-2003 Bert Vermeulen ! Copyright (C) 2002-2003 Peter Stamfest This program is released under the Gnu General Public License with *************** *** 349,353 **** ! static void do_refresh() { GList *l; dnd_refresh *at_end = NULL; --- 347,351 ---- ! static void do_refresh(struct tab *tab) { GList *l; dnd_refresh *at_end = NULL; *************** *** 360,363 **** --- 358,363 ---- (GCompareFunc) dnd_refresh_sort_func); + set_update_lock(tab); + for (l = g_list_first(dnd_refresh_list) ; l ; l = g_list_next(l)) { dnd_refresh *dr = l->data; *************** *** 375,378 **** --- 375,380 ---- } + release_update_lock(tab); + if (at_end) { GtkCTreeNode *node = tree_node_from_server_dn(at_end->tree, *************** *** 397,401 **** static void drag_end(GtkWidget *ctreeroot, GdkDragContext *drag_context, ! gpointer user_data) { #ifdef DEBUG --- 399,403 ---- static void drag_end(GtkWidget *ctreeroot, GdkDragContext *drag_context, ! struct tab *tab) { #ifdef DEBUG *************** *** 415,419 **** "drag-and-selection-data"); ! do_refresh(); } --- 417,421 ---- "drag-and-selection-data"); ! do_refresh(tab); } *************** *** 1010,1014 **** gdk_atom_intern("gq-browse-ctree", FALSE), GDK_CURRENT_TIME); ! do_refresh(); } --- 1012,1016 ---- gdk_atom_intern("gq-browse-ctree", FALSE), GDK_CURRENT_TIME); ! do_refresh(tab); } *************** *** 1154,1158 **** gtk_signal_connect(GTK_OBJECT(ctreeroot), "drag-end", GTK_SIGNAL_FUNC(drag_end), ! (gpointer) NULL); #if 0 gtk_signal_connect(GTK_OBJECT(ctreeroot), "drag-drop", --- 1156,1161 ---- gtk_signal_connect(GTK_OBJECT(ctreeroot), "drag-end", GTK_SIGNAL_FUNC(drag_end), ! (gpointer) tab); ! #if 0 gtk_signal_connect(GTK_OBJECT(ctreeroot), "drag-drop", Index: browse.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/browse.c,v retrieving revision 1.86 retrieving revision 1.87 diff -C2 -d -r1.86 -r1.87 *** browse.c 18 Oct 2003 08:26:59 -0000 1.86 --- browse.c 21 Oct 2003 20:58:27 -0000 1.87 *************** *** 325,329 **** assert(entry->base_methods); if (entry->base_methods->select) { ! entry->base_methods->select(entry, ctree, node, tab); } BROWSETAB(tab)->tree_row_selected = node; --- 325,333 ---- assert(entry->base_methods); if (entry->base_methods->select) { ! ! /* do not update right-hand pane if update-lock is set */ ! if (! BROWSETAB(tab)->update_lock) { ! entry->base_methods->select(entry, ctree, node, tab); ! } } BROWSETAB(tab)->tree_row_selected = node; *************** *** 478,482 **** --- 482,496 ---- } + void set_update_lock(struct tab *tab) + { + assert(tab); + BROWSETAB(tab)->update_lock++; + } + void release_update_lock(struct tab *tab) + { + assert(tab); + BROWSETAB(tab)->update_lock--; + } static struct tab_vtab browse_vtab = { browse_save_snapshot, Index: browse.h =================================================================== RCS file: /cvsroot/gqclient/gq/src/browse.h,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** browse.h 18 Oct 2003 08:26:59 -0000 1.34 --- browse.h 21 Oct 2003 20:58:28 -0000 1.35 *************** *** 47,50 **** --- 47,52 ---- GtkCTreeNode *selected_ctree_node; + /* lock used to suppress flickering during d'n'd */ + int update_lock; }; *************** *** 172,175 **** --- 174,181 ---- void update_browse_serverlist(struct tab *tab); void tree_row_close_connection(GtkMenuItem *menuitem, struct tab *tab); + + void set_update_lock(struct tab *tab); + void release_update_lock(struct tab *tab); + #endif |