diff mcabber/src/screen.c @ 1298:af035a304bec

colorable muc nick fix When ctrl+l is pressed, no error message is printed Added command to recolor someone
author Michal 'vorner' Vaner <vorner@ucw.cz>
date Tue, 28 Aug 2007 18:56:50 +0200
parents 7a0eaa53bd53
children 0dda8238af21
line wrap: on
line diff
--- a/mcabber/src/screen.c	Tue Aug 28 17:13:29 2007 +0200
+++ b/mcabber/src/screen.c	Tue Aug 28 18:56:50 2007 +0200
@@ -317,6 +317,15 @@
     g_free(snick);//They are not saved in the hash
     g_free(mnick);
     need_update = true;
+  } else if (!strcmp(color, "!")) {
+    if (nickcolors) {
+      g_free(g_hash_table_lookup(nickcolors, snick));
+      g_hash_table_remove(nickcolors, snick);
+      g_hash_table_remove(nickcolors, mnick);
+    }
+    g_free(snick);//They are not saved in the hash
+    g_free(mnick);
+    need_update = true;
   } else {
     int cl = get_user_color(color);
     if (cl < 0) {
@@ -507,39 +516,41 @@
     if (i >= COLOR_BLACK_BOLD_FG)
       COLOR_ATTRIB[i] = A_BOLD;
   }
-  char *ncolors = g_strdup(settings_opt_get("nick_colors")),
-      *ncolor_start = ncolors;
-  if (ncolors) {
-    while (*ncolors) {
-      if ((*ncolors == ' ') || (*ncolors == '\t')) {
-        ncolors ++;
-      } else {
-        char *end = ncolors;
-        bool ended = false;
-        while (*end && (*end != ' ') && (*end != '\t'))
-          end++;
-        if (!end)
-          ended = true;
-        *end = '\0';
-        int cl = get_user_color(ncolors);
-        if (cl < 0) {
-          scr_LogPrint(LPRINT_NORMAL, "Unknown color %s", ncolors);
+  if (!nickcols) {
+    char *ncolors = g_strdup(settings_opt_get("nick_colors")),
+         *ncolor_start = ncolors;
+    if (ncolors) {
+      while (*ncolors) {
+        if ((*ncolors == ' ') || (*ncolors == '\t')) {
+          ncolors ++;
         } else {
-          nickcols = g_realloc(nickcols, (++nickcolcount) * sizeof *nickcols);
-          nickcols[nickcolcount-1] = cl;
+          char *end = ncolors;
+          bool ended = false;
+          while (*end && (*end != ' ') && (*end != '\t'))
+            end++;
+          if (!end)
+            ended = true;
+          *end = '\0';
+          int cl = get_user_color(ncolors);
+          if (cl < 0) {
+            scr_LogPrint(LPRINT_NORMAL, "Unknown color %s", ncolors);
+          } else {
+            nickcols = g_realloc(nickcols, (++nickcolcount) * sizeof *nickcols);
+            nickcols[nickcolcount-1] = cl;
+          }
+          if (ended)
+            ncolors = NULL;
+          else
+            ncolors = end+1;
         }
-        if (ended)
-          ncolors = NULL;
-        else
-          ncolors = end+1;
       }
+      g_free(ncolor_start);
     }
-    g_free(ncolor_start);
-  }
-  if (!nickcols) {//Fallback to have something
-    nickcolcount = 1;
-    nickcols = g_new(int, 1);
-    *nickcols = COLOR_GENERAL;
+    if (!nickcols) {//Fallback to have something
+      nickcolcount = 1;
+      nickcols = g_new(int, 1);
+      *nickcols = COLOR_GENERAL;
+    }
   }
 }