Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37476283
en ru br
ALT Linux repos
S:2.0.1-alt1
5.0: 1.0-alt0.alpha2

Group :: Graphics
RPM: geeqie

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: geeqie-1.1-bar_keywords.c.diff
Download


--- geeqie-1.1/src/bar_keywords.c	2012-08-12 22:13:40.000000000 +0200
+++ geeqie-geeqie/src/bar_keywords.c	2012-08-21 22:31:05.000000000 +0200
@@ -216,17 +216,33 @@
 static void bar_pane_keywords_update(PaneKeywordsData *pkd)
 {
 	GList *keywords = NULL;
+	GList *orig_keywords = NULL;
+	GList *work1, *work2;
 	GtkTextBuffer *keyword_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pkd->keyword_view));
 
-	g_signal_handlers_block_by_func(keyword_buffer, bar_pane_keywords_changed, pkd);
-
 	keywords = metadata_read_list(pkd->fd, KEYWORD_KEY, METADATA_PLAIN);
+	orig_keywords = keyword_list_pull(pkd->keyword_view);
+
+	/* compare the lists */
+	work1 = keywords;
+	work2 = orig_keywords;
+	
+	while (work1 && work2)
+		{
+		if (strcmp(work1->data, work2->data) != 0) break;
+		work1 = work1->next;
+		work2 = work2->next;
+		}
+	
+	if (work1 || work2) /* lists differs */
+		{
+		g_signal_handlers_block_by_func(keyword_buffer, bar_pane_keywords_changed, pkd);
 	keyword_list_push(pkd->keyword_view, keywords);
 	bar_keyword_tree_sync(pkd);
-	string_list_free(keywords);
-	
 	g_signal_handlers_unblock_by_func(keyword_buffer, bar_pane_keywords_changed, pkd);
-
+		}
+	string_list_free(keywords);
+	string_list_free(orig_keywords);
 }
 
 void bar_pane_keywords_set_fd(GtkWidget *pane, FileData *fd)
@@ -264,11 +280,7 @@
 	pkd = g_object_get_data(G_OBJECT(bar), "pane_data");
 	if (!pkd) return FALSE;
 
-#if GTK_CHECK_VERSION(2,20,0)
 	if (gtk_widget_has_focus(pkd->keyword_view)) return gtk_widget_event(pkd->keyword_view, event);
-#else
-	if (GTK_WIDGET_HAS_FOCUS(pkd->keyword_view)) return gtk_widget_event(pkd->keyword_view, event);
-#endif
 
 	return FALSE;
 }
@@ -430,10 +442,8 @@
 {
 	PaneKeywordsData *pkd = data;
 
-	file_data_unregister_notify_func(bar_pane_keywords_notify_cb, pkd);
 	bar_pane_keywords_write(pkd);
 	bar_keyword_tree_sync(pkd);
-	file_data_register_notify_func(bar_pane_keywords_notify_cb, pkd, NOTIFY_PRIORITY_LOW);
 	pkd->idle_id = 0;
 	return FALSE;
 }
@@ -490,7 +500,7 @@
 		case TARGET_APP_KEYWORD_PATH:
 			{
 			GList *path = keyword_tree_get_path(keyword_tree, &child_iter);
-			gtk_selection_data_set(selection_data, selection_data->target,
+			gtk_selection_data_set(selection_data, gtk_selection_data_get_target(selection_data),
 					       8, (gpointer) &path, sizeof(path));
 			break;
 			}
@@ -611,13 +621,13 @@
 		{
 		case TARGET_APP_KEYWORD_PATH:
 			{
-			GList *path = *(gpointer *)selection_data->data;
+			GList *path = *(gpointer *)gtk_selection_data_get_data(selection_data);
 			src_valid = keyword_tree_get_iter(keyword_tree, &src_kw_iter, path);
 			string_list_free(path);
 			break;
 			}
 		default:
-			new_keywords = string_to_keywords_list((gchar *)selection_data->data);
+			new_keywords = string_to_keywords_list((gchar *)gtk_selection_data_get_data(selection_data));
 			break;
 		}
 
@@ -966,12 +976,7 @@
 
 	gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &kw_iter, &iter);
 
-	file_data_unregister_notify_func(bar_pane_keywords_notify_cb, pkd);
-
 	meta_data_connect_mark_with_keyword(keyword_tree, &kw_iter, mark);
-
-	file_data_register_notify_func(bar_pane_keywords_notify_cb, pkd, NOTIFY_PRIORITY_LOW);
-//	bar_pane_keywords_update(pkd);
 }
 
 
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin