diff options
author | Jon Trowbridge <trow@ximian.com> | 2001-04-24 10:51:45 +0800 |
---|---|---|
committer | Jon Trowbridge <trow@src.gnome.org> | 2001-04-24 10:51:45 +0800 |
commit | 038d1a932ce339985c91b05c2be35d512f7cef71 (patch) | |
tree | 83a183c4f1b31ec9bbbc1e0421753946f7617236 /addressbook/gui/component/e-address-popup.c | |
parent | e37b58efec96ce102e8c354a979a2b37d28249c7 (diff) | |
download | gsoc2013-evolution-038d1a932ce339985c91b05c2be35d512f7cef71.tar.gz gsoc2013-evolution-038d1a932ce339985c91b05c2be35d512f7cef71.tar.zst gsoc2013-evolution-038d1a932ce339985c91b05c2be35d512f7cef71.zip |
Removed attempts to use Radek's evil <DATA> hacks, which were just causing
2001-04-23 Jon Trowbridge <trow@ximian.com>
* e-html-utils.c (e_text_to_html_full): Removed attempts to use
Radek's evil <DATA> hacks, which were just causing me
(and GtkHTML) grief.
2001-04-23 Jon Trowbridge <trow@ximian.com>
* gui/component/e-address-popup.c: Lots of code has been
simplified here.
(e_address_popup_factory_new_control): Rather than directly pop
our control up in a window (via the e_address_popup_popup
function, which is now gone), just return the widget and let the
caller do the popping. This works better, since it means we don't
have to work around the vagaries of bonobo focus & event handling.
(e_address_popup_set_name): Refresh when both name & email have
been set, rather than checking a stupid counter.
(e_address_popup_set_email): Ditto.
2001-04-23 Jon Trowbridge <trow@ximian.com>
* mail-display.c (html_button_press_event): Check for mailto:
links, and pop up our mail address menu when we find one.
(make_popup_window): The main piece of code (ignoring a zillion
little callbacks) to pop up our windows with reasonable semantics
for having them close automatically.
(mail_text_write): Enable converting addresses to mailto links
in message bodies.
* mail-format.c (write_address): Simplify code, removing Radek's
<DATA> hacks. Write out addresses as mailto: links.
svn path=/trunk/; revision=9534
Diffstat (limited to 'addressbook/gui/component/e-address-popup.c')
-rw-r--r-- | addressbook/gui/component/e-address-popup.c | 119 |
1 files changed, 19 insertions, 100 deletions
diff --git a/addressbook/gui/component/e-address-popup.c b/addressbook/gui/component/e-address-popup.c index 7aebeacf21..134ce1241b 100644 --- a/addressbook/gui/component/e-address-popup.c +++ b/addressbook/gui/component/e-address-popup.c @@ -31,6 +31,7 @@ #include <bonobo/bonobo-property-bag.h> #include <bonobo/bonobo-generic-factory.h> #include <gal/widgets/e-popup-menu.h> +#include <gal/widgets/e-unicode.h> #include <addressbook/backend/ebook/e-book.h> #include <addressbook/backend/ebook/e-book-util.h> #include <addressbook/contact-editor/e-contact-editor.h> @@ -41,11 +42,6 @@ static GtkObjectClass *parent_class; static EBook *common_book = NULL; /* still sort of lame */ static void e_address_popup_destroy (GtkObject *); -static void e_address_popup_realize (GtkWidget *); -static gint e_address_popup_button_press_event (GtkWidget *, GdkEventButton *ev); -static gint e_address_popup_enter_notify_event (GtkWidget *, GdkEventCrossing *ev); -static gint e_address_popup_leave_notify_event (GtkWidget *, GdkEventCrossing *ev); - static void e_address_popup_query (EAddressPopup *); @@ -53,16 +49,10 @@ static void e_address_popup_class_init (EAddressPopupClass *klass) { GtkObjectClass *object_class = (GtkObjectClass *) klass; - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); parent_class = GTK_OBJECT_CLASS (gtk_type_class (gtk_event_box_get_type ())); object_class->destroy = e_address_popup_destroy; - - widget_class->realize = e_address_popup_realize; - widget_class->button_press_event = e_address_popup_button_press_event; - widget_class->enter_notify_event = e_address_popup_enter_notify_event; - widget_class->leave_notify_event = e_address_popup_leave_notify_event; } static void @@ -89,57 +79,6 @@ e_address_popup_destroy (GtkObject *obj) GTK_OBJECT_CLASS (parent_class)->destroy (obj); } -static void -e_address_popup_realize (GtkWidget *w) -{ - EAddressPopup *pop = E_ADDRESS_POPUP (w); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - GTK_WIDGET_CLASS (parent_class)->realize (w); - - /* Start the death count. */ - pop->leave_timeout_tag = gtk_timeout_add (10000, (GtkFunction) gtk_widget_destroy, pop); -} - -static gint -e_address_popup_button_press_event (GtkWidget *w, GdkEventButton *ev) -{ - gtk_widget_destroy (w); - return FALSE; -} - -static gint -e_address_popup_enter_notify_event (GtkWidget *w, GdkEventCrossing *ev) -{ - EAddressPopup *pop = E_ADDRESS_POPUP (w); - - if (pop->leave_timeout_tag) { - gtk_timeout_remove (pop->leave_timeout_tag); - pop->leave_timeout_tag = 0; - } - - return FALSE; -} - -static gint -e_address_popup_leave_notify_event (GtkWidget *w, GdkEventCrossing *ev) -{ - EAddressPopup *pop = E_ADDRESS_POPUP (w); - const gint slack=5; - gint x, y; - - /* Manually check our "leave" events to avoid weird erroneous leaves - that seem related to bonobo... */ - gdk_window_get_pointer (w->window, &x, &y, NULL); - if (slack <= x && x < w->allocation.width-slack && slack <= y && y < w->allocation.height-slack) - return FALSE; - - if (pop->leave_timeout_tag == 0) - pop->leave_timeout_tag = gtk_timeout_add (1000, (GtkFunction) gtk_widget_destroy, pop); - - return FALSE; -} - GtkType e_address_popup_get_type (void) { @@ -199,9 +138,7 @@ e_address_popup_set_name (EAddressPopup *pop, const gchar *name) pop->name = g_strdup (name); g_strstrip (pop->name); - ++pop->set_count; - - if (pop->set_count >= 2) + if (pop->name && pop->email) e_address_popup_refresh_names (pop); } @@ -214,9 +151,7 @@ e_address_popup_set_email (EAddressPopup *pop, const gchar *email) pop->email = g_strdup (email); g_strstrip (pop->email); - ++pop->set_count; - - if (pop->set_count >= 2) + if (pop->name && pop->email) e_address_popup_refresh_names (pop); } @@ -278,36 +213,6 @@ e_address_popup_new (void) return GTK_WIDGET (pop); } -static GtkWidget * -e_address_popup_popup (EAddressPopup *pop) -{ - GtkWidget *win, *fr; - gint x, y; - - win = gtk_window_new (GTK_WINDOW_POPUP); - fr = gtk_frame_new (NULL); - gtk_container_add (GTK_CONTAINER (win), fr); - gtk_container_add (GTK_CONTAINER (fr), GTK_WIDGET (pop)); - - gtk_window_set_policy (GTK_WINDOW (win), FALSE, FALSE, FALSE); - - gdk_window_get_pointer (NULL, &x, &y, NULL); - x = MAX (x-10, 0); - y = MAX (y-10, 0); - gtk_widget_set_uposition (win, x, y); - - gtk_signal_connect_object (GTK_OBJECT (pop), - "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroy), - GTK_OBJECT (win)); - - gtk_widget_show (GTK_WIDGET (pop)); - gtk_widget_show (fr); - gtk_widget_show (win); - - return win; -} - static void found_fields_cb (EBook *book, EBookStatus status, EList *writable_fields, gpointer closure) { @@ -351,7 +256,15 @@ e_address_popup_cardify (EAddressPopup *pop, ECard *card) static void add_contacts_cb (EAddressPopup *pop) { - e_contact_quick_add (pop->name, pop->email, NULL, NULL); + if (pop->email && *pop->email) { + + if (pop->name && *pop->name) + e_contact_quick_add (pop->name, pop->email, NULL, NULL); + else + e_contact_quick_add_free_form (pop->email, NULL, NULL); + + } + gtk_widget_destroy (GTK_WIDGET (pop)); } @@ -486,7 +399,13 @@ e_address_popup_factory_new_control (void) GtkWidget *w; w = e_address_popup_new (); - control = bonobo_control_new (e_address_popup_popup (E_ADDRESS_POPUP (w))); + control = bonobo_control_new (w); + gtk_widget_show (w); + + gtk_signal_connect_object (GTK_OBJECT (w), + "destroy", + GTK_SIGNAL_FUNC (bonobo_object_unref), + GTK_OBJECT (control)); bag = bonobo_property_bag_new (NULL, set_prop, w); bonobo_property_bag_add (bag, "name", PROPERTY_NAME, |