[gnome-contacts] Fix 100% cpu use redrawing



commit fb1071edf64070fbcfc2c773efff1794a79f55b1
Author: Alexander Larsson <alexl redhat com>
Date:   Thu Aug 25 13:39:20 2011 +0200

    Fix 100% cpu use redrawing
    
    changing the style from draw caused a loop in the expose handling.

 src/contacts-menu-button.vala |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)
---
diff --git a/src/contacts-menu-button.vala b/src/contacts-menu-button.vala
index cf4e401..5485dd7 100644
--- a/src/contacts-menu-button.vala
+++ b/src/contacts-menu-button.vala
@@ -98,12 +98,18 @@ public class Contacts.MenuButton : ToggleButton  {
   }
 
   public override void toggled () {
+    var context = get_style_context ();
     if (get_active ()) {
       if (!popup_in_progress)
 	menu.popup (null, null, menu_position, 1, Gtk.get_current_event_time ());
+      context.add_class (STYLE_CLASS_MENUBAR);
+      context.add_class (STYLE_CLASS_MENUITEM);
     } else {
+      context.remove_class (STYLE_CLASS_MENUBAR);
+      context.remove_class (STYLE_CLASS_MENUITEM);
       menu.popdown ();
     }
+    reset_style ();
   }
 
   public override bool button_press_event (Gdk.EventButton event) {
@@ -168,15 +174,7 @@ public class Contacts.MenuButton : ToggleButton  {
   }
 
   public override bool draw (Cairo.Context cr) {
-    var context = get_style_context ();
-    context.save ();
-    if (get_active ()) {
-      context.add_class (STYLE_CLASS_MENUBAR);
-      context.add_class (STYLE_CLASS_MENUITEM);
-    }
-    reset_style ();
     base.draw (cr);
-    context.restore ();
     return false;
   }
 



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