SF.net SVN: geany:[5742] trunk

colombanw at users.sourceforge.net colombanw at xxxxx
Tue Apr 26 16:21:47 UTC 2011


Revision: 5742
          http://geany.svn.sourceforge.net/geany/?rev=5742&view=rev
Author:   colombanw
Date:     2011-04-26 16:21:47 +0000 (Tue, 26 Apr 2011)

Log Message:
-----------
Avoid changing the tag tree if it's not the one of the current document

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/callbacks.c
    trunk/src/document.c
    trunk/src/documentprivate.h
    trunk/src/sidebar.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2011-04-26 15:07:25 UTC (rev 5741)
+++ trunk/ChangeLog	2011-04-26 16:21:47 UTC (rev 5742)
@@ -18,6 +18,11 @@
    src/documentprivate.h, src/editor.c, src/sidebar.c:
    Make sure to update the tag list only for the current document,
    avoiding idle updates to show the tag list for the wrong document.
+ * src/callbacks.c, src/document.c, src/documentprivate.h,
+   src/sidebar.c:
+   Avoid changing the tag tree if it's not the one of the current
+   document, fixing showing the wrong tag list when reloading
+   configuration files.
 
 
 2011-04-25  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2011-04-26 15:07:25 UTC (rev 5741)
+++ trunk/src/callbacks.c	2011-04-26 16:21:47 UTC (rev 5742)
@@ -709,8 +709,6 @@
 		ui_update_popup_reundo_items(doc);
 		ui_document_show_hide(doc); /* update the document menu */
 		build_menu_update(doc);
-		if (doc->priv->tag_list_update_needed)
-			document_update_tag_list_in_idle(doc);
 		sidebar_update_tag_list(doc, FALSE);
 
 		/* We delay the check to avoid weird fast, unintended switching of notebook pages when

Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c	2011-04-26 15:07:25 UTC (rev 5741)
+++ trunk/src/document.c	2011-04-26 16:21:47 UTC (rev 5742)
@@ -396,7 +396,6 @@
 	priv->redo_actions = NULL;
 	priv->line_count = 0;
 	priv->tag_list_update_source = 0;
-	priv->tag_list_update_needed = FALSE;
 #if ! defined(USE_GIO_FILEMON)
 	priv->last_check = time(NULL);
 #endif
@@ -2334,12 +2333,7 @@
 		return FALSE;
 
 	if (! main_status.quitting)
-	{
-		if (doc == document_get_current ())
-			document_update_tag_list(doc, TRUE);
-		else
-			doc->priv->tag_list_update_needed = TRUE;
-	}
+		document_update_tag_list(doc, TRUE);
 
 	doc->priv->tag_list_update_source = 0;
 	return FALSE;

Modified: trunk/src/documentprivate.h
===================================================================
--- trunk/src/documentprivate.h	2011-04-26 15:07:25 UTC (rev 5741)
+++ trunk/src/documentprivate.h	2011-04-26 16:21:47 UTC (rev 5742)
@@ -86,8 +86,6 @@
 	time_t			 mtime;
 	/* ID of the idle callback updating the tag list */
 	guint			 tag_list_update_source;
-	/* whether there is a tag list update we haven't had a chance to honor yet */
-	gboolean		 tag_list_update_needed;
 }
 GeanyDocumentPrivate;
 

Modified: trunk/src/sidebar.c
===================================================================
--- trunk/src/sidebar.c	2011-04-26 15:07:25 UTC (rev 5741)
+++ trunk/src/sidebar.c	2011-04-26 16:21:47 UTC (rev 5742)
@@ -195,7 +195,10 @@
 	/* changes the tree view to the given one, trying not to do useless changes */
 	#define CHANGE_TREE(new_child) \
 		G_STMT_START { \
-			if (child != new_child) \
+			/* only change the tag tree if it's actually not the same (to avoid flickering) and if
+			 * it's the one of the current document (to avoid problems when e.g. reloading
+			 * configuration files */ \
+			if (child != new_child && doc == document_get_current()) \
 			{ \
 				if (child) \
 					gtk_container_remove(GTK_CONTAINER(tag_window), child); \
@@ -213,8 +216,6 @@
 		return;
 	}
 
-	doc->priv->tag_list_update_needed = FALSE;
-
 	if (update)
 	{	/* updating the tag list in the left tag window */
 		if (doc->priv->tag_tree == NULL)


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list