[gnome-contacts] Always put a the contact frame in a togglebutton so that it gets the same size



commit 7edd070f198fe6a97027aa0dbdd8248c29cc619a
Author: Alexander Larsson <alexl redhat com>
Date:   Mon Sep 19 12:57:36 2011 +0200

    Always put a the contact frame in a togglebutton so that it gets the same size
    
    Without this we get a different layout in editing mode.
    Fixes bug #659170

 src/contacts-contact-pane.vala |   99 ++++++++++++++++++++++------------------
 1 files changed, 55 insertions(+), 44 deletions(-)
---
diff --git a/src/contacts-contact-pane.vala b/src/contacts-contact-pane.vala
index 42b695b..025c010 100644
--- a/src/contacts-contact-pane.vala
+++ b/src/contacts-contact-pane.vala
@@ -91,55 +91,68 @@ public class Contacts.ContactFrame : Frame {
     image.set_size_request (size, size);
 
     this.menu = menu;
-    if (menu != null) {
-      var button = new ToggleButton ();
-      button.set_focus_on_click (false);
-      button.get_style_context ().add_class ("contact-frame-button");
-      button.add (image);
-      button.set_mode (false);
-      this.add (button);
-
-      button.toggled.connect ( () => {
-	  if (button.get_active ()) {
-	    if (!popup_in_progress) {
-	      menu.popup (null, null, menu_position, 1, Gtk.get_current_event_time ());
-	    }
-	  } else {
-	    menu.popdown ();
-	  }
-	});
 
-      button.button_press_event.connect ( (event) => {
-	  var ewidget = Gtk.get_event_widget ((Gdk.Event)(&event));
+    var button = new ToggleButton ();
+    button.set_focus_on_click (false);
+    button.get_style_context ().add_class ("contact-frame-button");
+    button.add (image);
+    button.set_mode (false);
+    this.add (button);
+
+    button.toggled.connect ( () => {
+	if (this.menu == null) {
+	  if (button.get_active ())
+	    button.set_active (false);
+	  return;
+	}
 
-	  if (ewidget != button ||
-	      button.get_active ())
-	    return false;
+	if (button.get_active ()) {
+	  if (!popup_in_progress) {
+	    menu.popup (null, null, menu_position, 1, Gtk.get_current_event_time ());
+	  }
+	} else {
+	  menu.popdown ();
+	}
+      });
 
-	  menu.popup (null, null, menu_position, 1, Gtk.get_current_event_time ());
-	  button.set_active (true);
-	  popup_in_progress = true;
+    button.button_press_event.connect ( (event) => {
+	if (this.menu == null)
 	  return true;
-	});
-      button.button_release_event.connect ( (event) => {
-	  bool popup_in_progress_saved = popup_in_progress;
-	  popup_in_progress = false;
+	var ewidget = Gtk.get_event_widget ((Gdk.Event)(&event));
 
-	  var ewidget = Gtk.get_event_widget ((Gdk.Event)(&event));
+	if (ewidget != button ||
+	    button.get_active ())
+	  return false;
 
-	  if (ewidget == button &&
-	      !popup_in_progress_saved &&
-	      button.get_active ()) {
-	    menu.popdown ();
-	    return true;
-	  }
-	  if (ewidget != button)    {
-	    menu.popdown ();
-	    return true;
-	  }
+	menu.popup (null, null, menu_position, 1, Gtk.get_current_event_time ());
+	button.set_active (true);
+	popup_in_progress = true;
+	return true;
+      });
+
+    button.button_release_event.connect ( (event) => {
+	if (this.menu == null)
 	  return false;
-	});
 
+	bool popup_in_progress_saved = popup_in_progress;
+	popup_in_progress = false;
+
+	var ewidget = Gtk.get_event_widget ((Gdk.Event)(&event));
+
+	if (ewidget == button &&
+	    !popup_in_progress_saved &&
+	    button.get_active ()) {
+	  menu.popdown ();
+	  return true;
+	}
+	if (ewidget != button)    {
+	  menu.popdown ();
+	  return true;
+	}
+	return false;
+      });
+
+    if (menu != null) {
       menu.show.connect ( (menu) => {
 	  popup_in_progress = true;
 	  button.set_active (true);
@@ -150,8 +163,6 @@ public class Contacts.ContactFrame : Frame {
 	});
       menu.attach_to_widget (button, (menu) => {
 	});
-    } else {
-      this.add (image);
     }
 
     image.show ();



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