[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
|