From 929792231aae9868bbcf6388b309a78e26ae10ba Mon Sep 17 00:00:00 2001 From: Harry Lu Date: Tue, 4 Jan 2005 07:39:56 +0000 Subject: new internal function to popup the menu. (impl_button_press_event): call 2004-01-04 Harry Lu * misc/e-combo-button.c: (e_combo_button_popup): new internal function to popup the menu. (impl_button_press_event): call the new function. (e_combo_button_class_init): init a11y. (e_combo_button_get_label): new function to return label. (e_combo_button_popup_menu): new function to popup menu. * misc/e-combo-button.h: add function declarations. svn path=/trunk/; revision=28227 --- widgets/misc/ChangeLog | 10 +++++++++ widgets/misc/e-combo-button.c | 51 +++++++++++++++++++++++++++++++++++++++---- widgets/misc/e-combo-button.h | 4 ++++ 3 files changed, 61 insertions(+), 4 deletions(-) (limited to 'widgets/misc') diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog index fe113e8c5b..c5d73d9490 100644 --- a/widgets/misc/ChangeLog +++ b/widgets/misc/ChangeLog @@ -1,3 +1,13 @@ +2004-01-04 Harry Lu + + * misc/e-combo-button.c: (e_combo_button_popup): new internal function + to popup the menu. + (impl_button_press_event): call the new function. + (e_combo_button_class_init): init a11y. + (e_combo_button_get_label): new function to return label. + (e_combo_button_popup_menu): new function to popup menu. + * misc/e-combo-button.h: add function declarations. + 2004-12-17 Not Zed * e-error.c (ee_load, e_error_newv): translate strings based on diff --git a/widgets/misc/e-combo-button.c b/widgets/misc/e-combo-button.c index 66706c1f21..f48c4f3c68 100644 --- a/widgets/misc/e-combo-button.c +++ b/widgets/misc/e-combo-button.c @@ -25,6 +25,7 @@ #endif #include "e-combo-button.h" +#include "ea-widgets.h" #include #include @@ -251,6 +252,30 @@ impl_destroy (GtkObject *object) } + +static gboolean +e_combo_button_popup (EComboButton *combo_button, GdkEventButton *event) +{ + EComboButtonPrivate *priv; + + g_return_val_if_fail (combo_button != NULL, FALSE); + g_return_val_if_fail (E_IS_COMBO_BUTTON (combo_button), FALSE); + + priv = combo_button->priv; + + priv->menu_popped_up = TRUE; + + if (event) + gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL, + menu_position_func, combo_button, + event->button, event->time); + else + gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL, + menu_position_func, combo_button, + 0, gtk_get_current_event_time()); + + return TRUE; +} /* GtkWidget methods. */ static int @@ -272,10 +297,7 @@ impl_button_press_event (GtkWidget *widget, /* User clicked on the right side: pop up the menu. */ gtk_button_pressed (GTK_BUTTON (widget)); - priv->menu_popped_up = TRUE; - gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL, - menu_position_func, combo_button, - event->button, event->time); + e_combo_button_popup (combo_button, event); } else { /* User clicked on the left side: just behave like a normal button (i.e. not a toggle). */ @@ -393,6 +415,8 @@ e_combo_button_class_init (EComboButtonClass *combo_button_class) G_STRUCT_OFFSET (EComboButtonClass, activate_default), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); + + e_combo_button_a11y_init (); } static void @@ -509,3 +533,22 @@ e_combo_button_set_menu (EComboButton *combo_button, G_CALLBACK (menu_deactivate_callback), combo_button); } + +GtkWidget * +e_combo_button_get_label (EComboButton *combo_button) +{ + EComboButtonPrivate *priv; + + g_return_val_if_fail (combo_button != NULL, NULL); + g_return_val_if_fail (E_IS_COMBO_BUTTON (combo_button), NULL); + + priv = combo_button->priv; + + return priv->label; +} + +gboolean +e_combo_button_popup_menu (EComboButton *combo_button) +{ + return e_combo_button_popup (combo_button, NULL); +} diff --git a/widgets/misc/e-combo-button.h b/widgets/misc/e-combo-button.h index fa4dcc65a2..f7d5b878de 100644 --- a/widgets/misc/e-combo-button.h +++ b/widgets/misc/e-combo-button.h @@ -73,6 +73,10 @@ void e_combo_button_set_label (EComboButton *combo_button, void e_combo_button_set_menu (EComboButton *combo_button, GtkMenu *menu); +GtkWidget *e_combo_button_get_label (EComboButton *combo_button); + +gboolean e_combo_button_popup_menu (EComboButton *combo_button); + #ifdef __cplusplus } #endif /* __cplusplus */ -- cgit v1.2.3