[gimp] Only redraw the affected tags when prelight changes, not the entire widget



commit 48a8b89bea825311d5fe82336c4b4f59ef299736
Author: Michael Natterer <mitch gimp org>
Date:   Sat Jul 18 19:31:21 2009 +0200

    Only redraw the affected tags when prelight changes, not the entire widget

 app/widgets/gimptagpopup.c |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/app/widgets/gimptagpopup.c b/app/widgets/gimptagpopup.c
index b762546..4a110d3 100644
--- a/app/widgets/gimptagpopup.c
+++ b/app/widgets/gimptagpopup.c
@@ -92,6 +92,8 @@ static gboolean gimp_tag_popup_list_event              (GtkWidget          *widg
 static gboolean gimp_tag_popup_is_in_tag               (PopupTagData       *tag_data,
                                                         gint                x,
                                                         gint                y);
+static void     gimp_tag_popup_queue_draw_tag          (GimpTagPopup       *widget,
+                                                        PopupTagData       *tag_data);
 static void     gimp_tag_popup_toggle_tag              (GimpTagPopup       *popup,
                                                         PopupTagData       *tag_data);
 static void     gimp_tag_popup_check_can_toggle        (GimpTagged         *tagged,
@@ -897,8 +899,13 @@ gimp_tag_popup_list_event (GtkWidget    *widget,
 
       if (prelight != popup->prelight)
         {
+          if (popup->prelight)
+            gimp_tag_popup_queue_draw_tag (popup, popup->prelight);
+
           popup->prelight = prelight;
-          gtk_widget_queue_draw (widget);
+
+          if (popup->prelight)
+            gimp_tag_popup_queue_draw_tag (popup, popup->prelight);
         }
     }
   else if (event->type == GDK_BUTTON_RELEASE &&
@@ -947,6 +954,17 @@ gimp_tag_popup_is_in_tag (PopupTagData *tag_data,
 }
 
 static void
+gimp_tag_popup_queue_draw_tag (GimpTagPopup *popup,
+                               PopupTagData *tag_data)
+{
+  gtk_widget_queue_draw_area (popup->tag_area,
+                              tag_data->bounds.x,
+                              tag_data->bounds.y - popup->scroll_y,
+                              tag_data->bounds.width,
+                              tag_data->bounds.height);
+}
+
+static void
 gimp_tag_popup_toggle_tag (GimpTagPopup *popup,
                            PopupTagData *tag_data)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]