[ekg2-commit] r3744 - trunk/plugins/ncurses: trunk/plugins/ncurses/contacts.c trunk/plugins/ncurses/contacts.h trunk/plugins/ncurses/main.c

SVN commit svn w toxygen.net
Śro, 6 Lut 2008, 13:59:02 CET


Author: darkjames
Date: 2008-02-06 13:59:02 +0100 (Wed, 06 Feb 2008)
New Revision: 3744

Modified:
   trunk/plugins/ncurses/contacts.c
   trunk/plugins/ncurses/contacts.h
   trunk/plugins/ncurses/main.c
Log:
see for details: http://lists.ziew.org/mailman/pipermail/ekg2-devel/2008-February/001300.html


Modified: trunk/plugins/ncurses/contacts.c
===================================================================
--- trunk/plugins/ncurses/contacts.c	2008-02-06 01:10:01 UTC (rev 3743)
+++ trunk/plugins/ncurses/contacts.c	2008-02-06 12:59:02 UTC (rev 3744)
@@ -65,8 +65,6 @@
 static int contacts_nosort = 0;
 static size_t corderlen	= CONTACTS_ORDER_DEFAULT_LEN;			/* it must be always equal xstrlen(contacts_order) XXX please note if you add somewhere code which modify contacts_order */
 
-list_t sorted_all_cache = NULL;
-
 /* vars */
 int config_contacts_size;
 int config_contacts;
@@ -439,7 +437,7 @@
 		xfree(tmp);
 	}
 
-	if (all == 1 && !sorted_all_cache) {
+	if (all == 1) {
 		list_t l;
 
 		for (l = sessions; l; l = l->next) {
@@ -466,7 +464,7 @@
 
 		if (sorted_all) comp = contacts_compare;	/* like above */
 	}
-	if ((all == 1 && !sorted_all_cache) || all == 2) {
+	if (all == 1 || all == 2) {
 		list_t l;
 
 		for (l = metacontacts; l; l = l->next) {
@@ -503,9 +501,6 @@
 		}
 	} 
 
-	if (sorted_all_cache && all != 2) 	
-		sorted_all = sorted_all_cache;
-
 	for (j = 0; j < corderlen; /* xstrlen(contacts_order); */ j += 2) {
 		int count = 0;
 		list_t l = (!all) ? session_current->userlist : sorted_all;
@@ -608,10 +603,9 @@
 		xfree(tmp);
 	}
 
-	if (sorted_all && !sorted_all_cache && all != 2) {
-		sorted_all_cache = sorted_all;
-	}
 
+	list_destroy(sorted_all, 1);
+
 	xfree(group);
 
 	n->redraw = 1;
@@ -687,10 +681,15 @@
  */
 QUERY(ncurses_all_contacts_changed)
 {
-	va_list dummy;
-	list_destroy(sorted_all_cache, 1);
-	sorted_all_cache = NULL;
-	ncurses_contacts_changed(data, dummy);
+	window_t *w;
+
+/*	ncurses_contacts_changed(data, dummy); */
+
+	if ((w = window_find_sa(NULL, "__contacts", 1))) {
+		ncurses_contacts_update(w);
+		ncurses_redraw(w);
+		ncurses_commit();
+	}
 	return 0;
 }
 
@@ -742,6 +741,8 @@
 	return;
 }
 
+static int ncurses_contacts_update_redraw(window_t *w) { return 0; } 
+
 /*
  * ncurses_contacts_new()
  *
@@ -774,7 +775,7 @@
 	w->floating = 1;
 	w->edge = contacts_edge;
 	w->frames = contacts_frame;
-	n->handle_redraw = ncurses_contacts_update;
+	n->handle_redraw = ncurses_contacts_update_redraw;
 	n->handle_mouse = ncurses_contacts_mouse_handler;
 	w->nowrap = !contacts_wrap;
 	n->start = 0;

Modified: trunk/plugins/ncurses/contacts.h
===================================================================
--- trunk/plugins/ncurses/contacts.h	2008-02-06 01:10:01 UTC (rev 3743)
+++ trunk/plugins/ncurses/contacts.h	2008-02-06 12:59:02 UTC (rev 3744)
@@ -14,7 +14,6 @@
 extern char *config_contacts_groups;
 extern int config_contacts_metacontacts_swallow;
 
-extern list_t sorted_all_cache;
 extern int contacts_index;
 extern int contacts_group_index;
 

Modified: trunk/plugins/ncurses/main.c
===================================================================
--- trunk/plugins/ncurses/main.c	2008-02-06 01:10:01 UTC (rev 3743)
+++ trunk/plugins/ncurses/main.c	2008-02-06 12:59:02 UTC (rev 3744)
@@ -146,12 +146,15 @@
 
 static QUERY(ncurses_ui_window_switch) {
 	window_t *w 	= *(va_arg(ap, window_t **));
+	window_t *wc;
 
 	ncurses_window_t *n = w->private;
 
-        list_destroy(sorted_all_cache, 1);
-        sorted_all_cache = NULL;
 	contacts_index = 0;
+	if ((wc = window_find_sa(NULL, "__contacts", 1))) {
+		ncurses_contacts_update(wc);
+		ncurses_redraw(wc);
+	}
 
 	if (n->redraw)
 		ncurses_redraw(w);
@@ -330,9 +333,6 @@
 		ncurses_update_real_prompt(n);
         }
 
-	list_destroy(sorted_all_cache, 1);
-	sorted_all_cache = NULL;
-
 	if ((w = window_find_sa(NULL, "__contacts", 1))) {
 		ncurses_contacts_update(w);
 		ncurses_redraw(w);
@@ -628,7 +628,6 @@
 	query_connect_id(&ncurses_plugin, UI_PASSWORD_INPUT, ncurses_password_input, NULL);
 	query_connect_id(&ncurses_plugin, SESSION_ADDED, ncurses_statusbar_query, NULL);
 	query_connect_id(&ncurses_plugin, SESSION_REMOVED, ncurses_statusbar_query, NULL);
-	query_connect_id(&ncurses_plugin, SESSION_CHANGED, ncurses_contacts_changed, NULL);
 	query_connect_id(&ncurses_plugin, SESSION_EVENT, ncurses_statusbar_query, NULL);
 	query_connect_id(&ncurses_plugin, SESSION_RENAMED, ncurses_statusbar_query, NULL);
 	query_connect_id(&ncurses_plugin, USERLIST_CHANGED, ncurses_userlist_changed, NULL);
@@ -641,12 +640,20 @@
 	query_connect_id(&ncurses_plugin, VARIABLE_CHANGED, ncurses_variable_changed, NULL);
 	query_connect_id(&ncurses_plugin, CONFERENCE_RENAMED, ncurses_conference_renamed, NULL);
 
+	query_connect_id(&ncurses_plugin, CONFIG_POSTINIT, ncurses_postinit, NULL);
+	query_connect_id(&ncurses_plugin, PROTOCOL_DISCONNECTING, ncurses_session_disconnect_handler, NULL);
+
+/* redraw userlisty: */
+	query_connect_id(&ncurses_plugin, UI_REFRESH, ncurses_all_contacts_changed, NULL);
+
+	query_connect_id(&ncurses_plugin, SESSION_CHANGED, ncurses_all_contacts_changed, NULL);
+	query_connect_id(&ncurses_plugin, SESSION_EVENT, ncurses_all_contacts_changed, NULL);
+
 	query_connect_id(&ncurses_plugin, METACONTACT_ADDED, ncurses_all_contacts_changed, NULL);
 	query_connect_id(&ncurses_plugin, METACONTACT_REMOVED, ncurses_all_contacts_changed, NULL);
 	query_connect_id(&ncurses_plugin, METACONTACT_ITEM_ADDED, ncurses_all_contacts_changed, NULL);
 	query_connect_id(&ncurses_plugin, METACONTACT_ITEM_REMOVED, ncurses_all_contacts_changed, NULL);
-	query_connect_id(&ncurses_plugin, CONFIG_POSTINIT, ncurses_postinit, NULL);
-	query_connect_id(&ncurses_plugin, PROTOCOL_DISCONNECTING, ncurses_session_disconnect_handler, NULL);
+
 #ifdef WITH_ASPELL
 	variable_add(&ncurses_plugin, ("aspell"), VAR_BOOL, 1, &config_aspell, ncurses_changed_aspell, NULL, NULL);
         variable_add(&ncurses_plugin, ("aspell_lang"), VAR_STR, 1, &config_aspell_lang, ncurses_changed_aspell, NULL, NULL);
@@ -739,11 +746,6 @@
 
 	timer_remove(&ncurses_plugin, "ncurses:clock");
 
-	if (sorted_all_cache) {
-		list_destroy(sorted_all_cache, 1);
-		sorted_all_cache = NULL;
-	}
-
 	ncurses_deinit();
 
 	plugin_unregister(&ncurses_plugin);



Więcej informacji o liście dyskusyjnej ekg2-commit