node-editor: Report all errors in tooltip
authorBenjamin Otte <otte@redhat.com>
Fri, 10 May 2019 03:09:12 +0000 (05:09 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 12 May 2019 15:27:01 +0000 (17:27 +0200)
Don't just report the first one.

demos/node-editor/node-editor-window.c

index bb6c37201c2374d61a92cb7d83c9c813cf2c8e8b..1b853d49842b9ed27971034d1362553d92a5a96a 100644 (file)
@@ -265,6 +265,7 @@ text_view_query_tooltip_cb (GtkWidget        *widget,
 {
   GtkTextIter iter;
   guint i;
+  GString *text;
 
   if (keyboard_tip)
     {
@@ -282,6 +283,8 @@ text_view_query_tooltip_cb (GtkWidget        *widget,
       gtk_text_view_get_iter_at_position (GTK_TEXT_VIEW (self->text_view), &iter, &trailing, bx, by);
     }
 
+  text = g_string_new ("");
+
   for (i = 0; i < self->errors->len; i ++)
     {
       const TextViewError *e = &g_array_index (self->errors, TextViewError, i);
@@ -292,12 +295,23 @@ text_view_query_tooltip_cb (GtkWidget        *widget,
 
       if (gtk_text_iter_in_range (&iter, &start_iter, &end_iter))
         {
-          gtk_tooltip_set_text (tooltip, e->message);
-          return TRUE;
+          if (text->len > 0)
+            g_string_append (text, "\n");
+          g_string_append (text, e->message);
         }
     }
 
-  return FALSE;
+  if (text->len > 0)
+    {
+      gtk_tooltip_set_text (tooltip, text->str);
+      g_string_free (text, TRUE);
+      return TRUE;
+    }
+  else
+    {
+      g_string_free (text, TRUE);
+      return FALSE;
+    }
 }
 
 gboolean