[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