[ekg2-devel] Odswiezanie okienka kontaktow - ncurses

Wiesław Ochmiński wiechu w wiechu.com
Czw, 7 Lut 2008, 17:41:49 CET


Mam nadzieję, że teraz naprawiając jedno nie zepsułem niczego innego.

-- 
 Wiesław Ochmiński, Polska Północna, Malbork.
-------------- następna część ---------
Index: ekg/commands.c
===================================================================
--- ekg/commands.c	(wersja 3755)
+++ ekg/commands.c	(kopia robocza)
@@ -582,11 +582,8 @@
 	}
 
 	tmp = xstrdup(u->uid);
-	query_emit_id(NULL, USERLIST_REMOVED, &params[0], &tmp);
-	query_emit_id(NULL, REMOVE_NOTIFY, &session->uid, &tmp);
 
         printq("user_deleted", params[0], session_name(session));
-	xfree(tmp);
 
 	tabnick_remove(u->uid);
 	tabnick_remove(u->nickname);
@@ -594,7 +591,12 @@
 	config_changed = 1;
 
 	userlist_remove(session, u);
+
+	query_emit_id(NULL, USERLIST_REMOVED, &params[0], &tmp);
+	query_emit_id(NULL, REMOVE_NOTIFY, &session->uid, &tmp);
 	
+	xfree(tmp);
+
 	return 0;
 }
 
Index: ekg/windows.c
===================================================================
--- ekg/windows.c	(wersja 3755)
+++ ekg/windows.c	(kopia robocza)
@@ -189,6 +189,7 @@
 {
 	list_t l;
 	userlist_t *u;
+	int ul_refresh = 0;
 
 #if 0
 	/* XXX, need testing */
@@ -212,8 +213,10 @@
 		query_emit_id(NULL, UI_WINDOW_SWITCH, &w);	/* XXX */
 
 		w->act &= ~3;
-		if (w->target && w->session && (u=userlist_find(w->session, w->target)) && (u->xstate & EKG_XSTATE_BLINK)) 
+		if (w->target && w->session && (u=userlist_find(w->session, w->target)) && (u->xstate & EKG_XSTATE_BLINK)) {
 			u->xstate &= ~EKG_XSTATE_BLINK;
+			ul_refresh = 1;
+		}
 
 		if (!(config_make_window & 3) && w->id == 1 && session_current) {
 			list_t l;
@@ -221,11 +224,18 @@
 
 			for (l = s->userlist; l; l = l->next) {
                         	userlist_t *u = l->data;
-				if (!window_find_s(s, u->uid))
-		                        u->xstate &= ~EKG_XSTATE_BLINK;
+				if (!window_find_s(s, u->uid)) {
+					if (u->xstate & EKG_XSTATE_BLINK) {
+		                    		u->xstate &= ~EKG_XSTATE_BLINK;
+						ul_refresh = 1;
+					}
+				}
 			}
                 }
 
+		if (ul_refresh)
+			query_emit_id(NULL, USERLIST_REFRESH);
+
 		if (!w->id)
 			w->session = session_current;
 


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