diff options
Diffstat (limited to 'lib/toolbar/ephy-tb-button.c')
-rw-r--r-- | lib/toolbar/ephy-tb-button.c | 775 |
1 files changed, 0 insertions, 775 deletions
diff --git a/lib/toolbar/ephy-tb-button.c b/lib/toolbar/ephy-tb-button.c deleted file mode 100644 index 4485102f0..000000000 --- a/lib/toolbar/ephy-tb-button.c +++ /dev/null @@ -1,775 +0,0 @@ -/* - * Copyright (C) 2002 Ricardo Fernández Pascual - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "ephy-tb-button.h" -#include "ephy-gobject-misc.h" -#include "ephy-gui.h" -#include "ephy-marshal.h" -#include "eel-gconf-extensions.h" - -#include <libgnome/gnome-i18n.h> -#include <gtk/gtklabel.h> -#include <gtk/gtkalignment.h> -#include <gtk/gtktoolbar.h> -#include <bonobo/bonobo-ui-toolbar.h> -#include <string.h> - -#define NOT_IMPLEMENTED g_warning ("not implemented: " G_STRLOC); -//#define DEBUG_MSG(x) g_print x -#define DEBUG_MSG(x) - -/** - * Private data - */ -struct _EphyTbButtonPrivate -{ - gchar *label; - GtkWidget *image; - gboolean use_stock; - gchar *tooltip_text; - GtkMenu *menu; - GtkWidget *arrow_widget; - gboolean sensitive; - - GtkWidget *button; - GtkBox *button_box; - GtkLabel *label_wid; - gboolean priority; - - gboolean in_bonobo_toobar; - - GtkReliefStyle button_relief; - GtkOrientation orientation; - GtkToolbarStyle style_gtk; - BonoboUIToolbarStyle style_bonobo; - GtkIconSize icon_size; // TODO - gboolean show_tooltips; - GtkTooltips *tooltips; -}; - -/** - * Private functions, only availble from this file - */ -static void ephy_tb_button_class_init (EphyTbButtonClass *klass); -static void ephy_tb_button_init (EphyTbButton *b); -static void ephy_tb_button_finalize_impl (GObject *o); -static void ephy_tb_button_build (EphyTbButton *b); -static void ephy_tb_button_empty (EphyTbButton *b); -static void ephy_tb_button_parent_set_cb (GtkWidget *widget, GtkObject *old_parent, - EphyTbButton *tb); -static void ephy_tb_button_gtk_orientation_changed_cb (GtkToolbar *toolbar, GtkOrientation orientation, - EphyTbButton *b); -static void ephy_tb_button_gtk_style_changed_cb (GtkToolbar *toolbar, GtkToolbarStyle style, - EphyTbButton *b); -static void ephy_tb_button_bonobo_set_orientation_cb (BonoboUIToolbar *toolbar, GtkOrientation orientation, - EphyTbButton *b); -static void ephy_tb_button_bonobo_set_style_cb (BonoboUIToolbar *toolbar, EphyTbButton *b); -static gboolean ephy_tb_button_arrow_key_press_event_cb (GtkWidget *widget, GdkEventKey *event, - EphyTbButton *b); -static gboolean ephy_tb_button_arrow_button_press_event_cb (GtkWidget *widget, GdkEventButton *event, - EphyTbButton *b); -static gboolean ephy_tb_button_button_button_press_event_cb (GtkWidget *widget, GdkEventButton *event, - EphyTbButton *b); -static void ephy_tb_button_button_popup_menu_cb (GtkWidget *w, EphyTbButton *b); -static void ephy_tb_button_menu_deactivated_cb (GtkMenuShell *ms, EphyTbButton *b); - - -static gpointer gtk_hbox_class; - -enum EphyTbButtonSignalsEnum { - EPHY_TB_BUTTON_MENU_ACTIVATED, - EPHY_TB_BUTTON_LAST_SIGNAL -}; -static gint EphyTbButtonSignals[EPHY_TB_BUTTON_LAST_SIGNAL]; - -/** - * TbButton object - */ - -MAKE_GET_TYPE (ephy_tb_button, "EphyTbButton", EphyTbButton, ephy_tb_button_class_init, - ephy_tb_button_init, GTK_TYPE_HBOX); - -static void -ephy_tb_button_class_init (EphyTbButtonClass *klass) -{ - G_OBJECT_CLASS (klass)->finalize = ephy_tb_button_finalize_impl; - gtk_hbox_class = g_type_class_peek_parent (klass); - - EphyTbButtonSignals[EPHY_TB_BUTTON_MENU_ACTIVATED] = g_signal_new ( - "menu-activated", G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_FIRST | G_SIGNAL_RUN_LAST | G_SIGNAL_RUN_CLEANUP, - G_STRUCT_OFFSET (EphyTbButtonClass, menu_activated), - NULL, NULL, - ephy_marshal_VOID__VOID, - G_TYPE_NONE, 0); -} - -static void -ephy_tb_button_init (EphyTbButton *tb) -{ - EphyTbButtonPrivate *p = g_new0 (EphyTbButtonPrivate, 1); - tb->priv = p; - p->label = g_strdup (""); - p->tooltip_text = g_strdup (""); - - p->button_relief = GTK_RELIEF_NORMAL; - p->orientation = GTK_ORIENTATION_HORIZONTAL; - p->style_gtk = GTK_TOOLBAR_BOTH_HORIZ; - p->style_bonobo = BONOBO_UI_TOOLBAR_STYLE_PRIORITY_TEXT; - p->icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR; - p->show_tooltips = TRUE; - - g_signal_connect (tb, "parent-set", - G_CALLBACK (ephy_tb_button_parent_set_cb), tb); -} - -EphyTbButton * -ephy_tb_button_new (void) -{ - EphyTbButton *ret = g_object_new (EPHY_TYPE_TB_BUTTON, NULL); - return ret; -} - -static void -ephy_tb_button_finalize_impl (GObject *o) -{ - EphyTbButton *it = EPHY_TB_BUTTON (o); - EphyTbButtonPrivate *p = it->priv; - - ephy_tb_button_empty (it); - - if (p->image) - { - g_object_unref (p->image); - } - - if (p->tooltips) - { - g_object_unref (p->tooltips); - } - - if (p->menu) - { - g_object_unref (p->menu); - } - - if (p->arrow_widget) - { - g_object_unref (p->arrow_widget); - } - - g_free (p); - - DEBUG_MSG (("EphyTbButton finalized\n")); - - G_OBJECT_CLASS (gtk_hbox_class)->finalize (o); -} - -void -ephy_tb_button_set_label (EphyTbButton *b, const gchar *text) -{ - EphyTbButtonPrivate *p = b->priv; - g_free (p->label); - p->label = g_strdup (text); - DEBUG_MSG (("EphyTbButton label set to '%s'\n", p->label)); - if (!p->label_wid || p->use_stock) - { - ephy_tb_button_build (b); - } - else - { - gtk_label_set_text (p->label_wid, p->label); - } -} - -void -ephy_tb_button_set_tooltip_text (EphyTbButton *b, const gchar *text) -{ - EphyTbButtonPrivate *p = b->priv; - g_free (p->tooltip_text); - p->tooltip_text = g_strdup (text); - - if (!p->tooltips || !p->button) - { - ephy_tb_button_build (b); - } - else - { - gtk_tooltips_set_tip (p->tooltips, p->button, - p->tooltip_text, p->tooltip_text); - } -} - -/* this function comes directly from gtktoolbar.c */ -static gchar * -elide_underscores (const gchar *original) -{ - gchar *q, *result; - const gchar *p; - gboolean last_underscore; - - q = result = g_malloc (strlen (original) + 1); - last_underscore = FALSE; - - for (p = original; *p; p++) - { - if (!last_underscore && *p == '_') - { - last_underscore = TRUE; - } - else - { - last_underscore = FALSE; - *q++ = *p; - } - } - - *q = '\0'; - - return result; -} - -static void -ephy_tb_button_build (EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - GtkWidget *align; - GtkWidget *image; - GtkStockItem stock_item; - gboolean really_use_stock = p->use_stock && gtk_stock_lookup (p->label, &stock_item); - gboolean show_image = p->label[0] == '\0' - || (p->in_bonobo_toobar && p->style_bonobo != BONOBO_UI_TOOLBAR_STYLE_TEXT_ONLY) - || (!p->in_bonobo_toobar && p->style_gtk != GTK_TOOLBAR_TEXT); - gboolean show_label = !show_image - || (p->priority && ((p->in_bonobo_toobar && p->style_bonobo == BONOBO_UI_TOOLBAR_STYLE_PRIORITY_TEXT) - || (!p->in_bonobo_toobar && p->style_gtk == GTK_TOOLBAR_BOTH_HORIZ))) - || (!p->in_bonobo_toobar - && (p->style_gtk == GTK_TOOLBAR_BOTH - || p->style_gtk == GTK_TOOLBAR_TEXT - /* CHECK: what about GTK_TOOLBAR_BOTH_HORIZ? */ )) - || (p->in_bonobo_toobar - && (p->style_bonobo == BONOBO_UI_TOOLBAR_STYLE_ICONS_AND_TEXT - || p->style_bonobo == BONOBO_UI_TOOLBAR_STYLE_TEXT_ONLY)); - - ephy_tb_button_empty (b); - - if (!p->button) - { - p->button = gtk_button_new (); - g_object_ref (p->button); - gtk_widget_show (p->button); - gtk_box_pack_start_defaults (GTK_BOX (b), p->button); - } - - gtk_button_set_relief (GTK_BUTTON (p->button), p->button_relief); - gtk_widget_set_sensitive (p->button, p->sensitive); - if (p->tooltips) - { - gtk_tooltips_set_tip (p->tooltips, p->button, - p->tooltip_text, p->tooltip_text); - } - g_signal_connect (p->button, "button_press_event", - G_CALLBACK (ephy_tb_button_button_button_press_event_cb), b); - g_signal_connect (p->button, "popup_menu", - G_CALLBACK (ephy_tb_button_button_popup_menu_cb), b); - - align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); - gtk_widget_show (align); - gtk_container_add (GTK_CONTAINER (p->button), align); - - if ((p->in_bonobo_toobar && p->style_bonobo == BONOBO_UI_TOOLBAR_STYLE_ICONS_AND_TEXT) - || (!p->in_bonobo_toobar && p->style_gtk == GTK_TOOLBAR_BOTH) - || p->orientation == GTK_ORIENTATION_VERTICAL) - { - p->button_box = GTK_BOX (gtk_vbox_new (FALSE, 2)); - } - else - { - p->button_box = GTK_BOX (gtk_hbox_new (FALSE, 2)); - } - g_object_ref (p->button_box); - gtk_widget_show (GTK_WIDGET (p->button_box)); - gtk_container_add (GTK_CONTAINER (align), GTK_WIDGET (p->button_box)); - - if (!p->image && really_use_stock && show_image) - { - image = gtk_image_new_from_stock (p->label, p->icon_size); - } - else - { - image = p->image; - } - - if (image) - { - if (show_image) - { - gtk_box_pack_start_defaults (p->button_box, GTK_WIDGET (image)); - gtk_widget_show (image); - } - } - else - { - show_label = TRUE; - } - - if (show_label) - { - p->label_wid = GTK_LABEL (gtk_label_new (p->label)); - g_object_ref (p->label_wid); - - if (really_use_stock) - { - gchar *l = elide_underscores (stock_item.label); - gtk_label_set_text (p->label_wid, l); - g_free (l); - } - - gtk_widget_show (GTK_WIDGET (p->label_wid)); - gtk_box_pack_end_defaults (p->button_box, GTK_WIDGET (p->label_wid)); - } - - DEBUG_MSG (("EphyTbButton built, label='%s'\n", p->label)); -} - -void -ephy_tb_button_set_priority (EphyTbButton *b, gboolean priority) -{ - EphyTbButtonPrivate *p = b->priv; - if (p->priority != priority) - { - p->priority = priority; - ephy_tb_button_build (b); - } -} - -void -ephy_tb_button_set_image (EphyTbButton *b, GtkWidget *image) -{ - EphyTbButtonPrivate *p = b->priv; - if (p->image) - { - g_object_unref (p->image); - } - p->image = image ? g_object_ref (image) : NULL; - ephy_tb_button_build (b); -} - -static void -button_state_changed_cb (GtkWidget *widget, GtkStateType previous_state, EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - GtkWidget *button; - GtkStateType state = GTK_WIDGET_STATE (widget); - GtkStateType other; - - if (state == GTK_STATE_ACTIVE || - state == GTK_STATE_SELECTED || - state == GTK_STATE_INSENSITIVE) - { - return; - } - - button = (widget == p->arrow_widget) ? p->button : p->arrow_widget; - other = GTK_WIDGET_STATE (button); - - if (state != other) - { - gtk_widget_set_state (button, state); - } -} - -void -ephy_tb_button_set_show_arrow (EphyTbButton *b, gboolean value) -{ - EphyTbButtonPrivate *p = b->priv; - - if (p->arrow_widget && !value) - { - if (p->arrow_widget->parent == GTK_WIDGET (b)) - { - gtk_container_remove (GTK_CONTAINER (b), p->arrow_widget); - } - g_object_unref (p->arrow_widget); - p->arrow_widget = NULL; - } - else if (!p->arrow_widget && value) - { - p->arrow_widget = gtk_toggle_button_new (); - gtk_button_set_relief (GTK_BUTTON (p->arrow_widget), GTK_RELIEF_NONE); - - gtk_container_add (GTK_CONTAINER (p->arrow_widget), - gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT)); - - g_object_ref (p->arrow_widget); - gtk_object_sink (GTK_OBJECT (p->arrow_widget)); - - g_signal_connect (p->arrow_widget, "key_press_event", - G_CALLBACK (ephy_tb_button_arrow_key_press_event_cb), - b); - g_signal_connect (p->arrow_widget, "button_press_event", - G_CALLBACK (ephy_tb_button_arrow_button_press_event_cb), - b); - g_signal_connect (p->arrow_widget, "state_changed", - G_CALLBACK (button_state_changed_cb), - b); - g_signal_connect (p->button, "state_changed", - G_CALLBACK (button_state_changed_cb), - b); - - gtk_widget_show_all (p->arrow_widget); - gtk_box_pack_end_defaults (GTK_BOX (b), p->arrow_widget); - gtk_widget_set_sensitive (p->arrow_widget, value); - } -} - -void -ephy_tb_button_set_enable_menu (EphyTbButton *b, gboolean value) -{ - EphyTbButtonPrivate *p = b->priv; - if (value && !p->menu) - { - p->menu = GTK_MENU (gtk_menu_new ()); - g_signal_connect (p->menu, "deactivate", - G_CALLBACK (ephy_tb_button_menu_deactivated_cb), b); - } - else if (!value && p->menu) - { - g_object_unref (p->menu); - p->menu = FALSE; - } - -} - -GtkMenuShell * -ephy_tb_button_get_menu (EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - return p->menu ? GTK_MENU_SHELL (p->menu) : NULL; -} - -GtkButton * -ephy_tb_button_get_button (EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - if (!p->button) - { - ephy_tb_button_build (b); - } - return GTK_BUTTON (p->button); -} - -void -ephy_tb_button_set_use_stock (EphyTbButton *b, gboolean value) -{ - EphyTbButtonPrivate *p = b->priv; - if (value != p->use_stock) - { - p->use_stock = value; - ephy_tb_button_build (b); - } -} - -static void -ephy_tb_button_empty (EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - - if (p->button) - { - if (GTK_BIN (p->button)->child) - { - gtk_container_remove (GTK_CONTAINER (p->button), GTK_BIN (p->button)->child); - } - } - - if (p->button_box) - { - g_object_unref (p->button_box); - p->button_box = NULL; - } - - if (p->label_wid) - { - g_object_unref (p->label_wid); - p->label_wid = NULL; - } -} - -static void -ephy_tb_button_parent_set_cb (GtkWidget *widget, GtkObject *old_parent, EphyTbButton *tb) -{ - EphyTbButtonPrivate *p = tb->priv; - GtkWidget *new_parent = widget->parent; - - DEBUG_MSG (("EphyTbButton parent changed (widget=%p, button=%p, old=%p, new=%p)\n", - widget, tb, old_parent, new_parent)); - - if (new_parent) - { - GtkToolbar *gtktb = NULL; - BonoboUIToolbar *btb = NULL; - while (new_parent && !gtktb && !btb) - { - DEBUG_MSG (("new_parent ia a %s\n", g_type_name_from_instance ((void *) new_parent))); - - if (GTK_IS_TOOLBAR (new_parent)) - { - gtktb = GTK_TOOLBAR (new_parent); - } - else if (BONOBO_IS_UI_TOOLBAR (new_parent)) - { - btb = BONOBO_UI_TOOLBAR (new_parent); - } - else - { - g_signal_connect (new_parent, "parent_set", - G_CALLBACK (ephy_tb_button_parent_set_cb), tb); - } - new_parent = new_parent->parent; - } - - if (gtktb) - { - DEBUG_MSG (("EphyTbButton getting style from a GtkToolbar (%p)\n", gtktb)); - p->in_bonobo_toobar = FALSE; - - gtk_widget_ensure_style (GTK_WIDGET (gtktb)); - gtk_widget_style_get (GTK_WIDGET (gtktb), "button_relief", &p->button_relief, NULL); - - p->orientation = gtk_toolbar_get_orientation (gtktb); - p->style_gtk = gtk_toolbar_get_style (gtktb); - p->icon_size = gtk_toolbar_get_icon_size (gtktb); - p->show_tooltips = gtk_toolbar_get_tooltips (gtktb); - - if (p->tooltips) - { - g_object_unref (p->tooltips); - } - p->tooltips = gtk_tooltips_new (); - if (p->show_tooltips) - { - gtk_tooltips_enable (p->tooltips); - } - else - { - gtk_tooltips_disable (p->tooltips); - } - g_object_ref (p->tooltips); - gtk_object_sink (GTK_OBJECT (p->tooltips)); - - g_signal_connect (gtktb, "orientation-changed", - G_CALLBACK (ephy_tb_button_gtk_orientation_changed_cb), tb); - g_signal_connect (gtktb, "style-changed", - G_CALLBACK (ephy_tb_button_gtk_style_changed_cb), tb); - - ephy_tb_button_build (tb); - } - - if (btb) - { - DEBUG_MSG (("EphyTbButton getting style from a BonoboUIToolbar (%p)\n", btb)); - p->in_bonobo_toobar = TRUE; - - p->button_relief = GTK_RELIEF_NONE; - - p->orientation = bonobo_ui_toolbar_get_orientation (btb); - p->style_bonobo = bonobo_ui_toolbar_get_style (btb); - //p->icon_size = ???; - p->show_tooltips = TRUE; - - if (p->tooltips) - { - g_object_unref (p->tooltips); - } - p->tooltips = bonobo_ui_toolbar_get_tooltips (btb); - g_object_ref (p->tooltips); - - g_signal_connect (btb, "set-orientation", - G_CALLBACK (ephy_tb_button_bonobo_set_orientation_cb), tb); - g_signal_connect (btb, "set-style", - G_CALLBACK (ephy_tb_button_bonobo_set_style_cb), tb); - - ephy_tb_button_build (tb); - } - } - else - { - while (old_parent) - { - g_signal_handlers_disconnect_matched (old_parent, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, tb); - if (GTK_IS_WIDGET (old_parent)) - { - old_parent = GTK_WIDGET (old_parent)->parent - ? GTK_OBJECT (GTK_WIDGET (old_parent)->parent) - : NULL; - } - else - { - old_parent = NULL; - } - } - } -} - -static void -ephy_tb_button_gtk_orientation_changed_cb (GtkToolbar *toolbar, GtkOrientation orientation, EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - if (p->orientation != orientation) - { - p->orientation = orientation; - ephy_tb_button_build (b); - } -} - -static void -ephy_tb_button_gtk_style_changed_cb (GtkToolbar *toolbar, GtkToolbarStyle style, EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - if (p->style_gtk != style) - { - p->style_gtk = style; - ephy_tb_button_build (b); - } -} - -static void -ephy_tb_button_bonobo_set_orientation_cb (BonoboUIToolbar *toolbar, GtkOrientation orientation, EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - if (p->orientation != orientation) - { - p->orientation = orientation; - ephy_tb_button_build (b); - } -} - -static void -ephy_tb_button_bonobo_set_style_cb (BonoboUIToolbar *toolbar, EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - BonoboUIToolbarStyle style = bonobo_ui_toolbar_get_style (toolbar); - if (style != p->style_bonobo) - { - p->style_bonobo = style; - ephy_tb_button_build (b); - } -} - -static void -ephy_tb_button_popup_menu_under_arrow (EphyTbButton *b, GdkEventButton *event) -{ - EphyTbButtonPrivate *p = b->priv; - - if (p->menu) - { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (p->arrow_widget), TRUE); - g_signal_emit (b, EphyTbButtonSignals[EPHY_TB_BUTTON_MENU_ACTIVATED], 0); - gtk_menu_popup (p->menu, NULL, NULL, ephy_gui_menu_position_under_widget, p->arrow_widget, - event ? event->button : 0, - event ? event->time : gtk_get_current_event_time ()); - } -} - -static void -ephy_tb_button_menu_deactivated_cb (GtkMenuShell *ms, EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - if (p->arrow_widget) - { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (p->arrow_widget), FALSE); - } -} - -static gboolean -ephy_tb_button_arrow_button_press_event_cb (GtkWidget *widget, GdkEventButton *event, EphyTbButton *b) -{ - ephy_tb_button_popup_menu_under_arrow (b, event); - return TRUE; -} - -static gboolean -ephy_tb_button_arrow_key_press_event_cb (GtkWidget *widget, GdkEventKey *event, EphyTbButton *b) -{ - if (event->keyval == GDK_space - || event->keyval == GDK_KP_Space - || event->keyval == GDK_Return - || event->keyval == GDK_KP_Enter - || event->keyval == GDK_Menu) - { - ephy_tb_button_popup_menu_under_arrow (b, NULL); - } - - return FALSE; -} - -static gboolean -ephy_tb_button_button_button_press_event_cb (GtkWidget *widget, GdkEventButton *event, - EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - - if (event->button == 3 && p->menu) - { - g_signal_emit (b, EphyTbButtonSignals[EPHY_TB_BUTTON_MENU_ACTIVATED], 0); - gtk_menu_popup (p->menu, NULL, NULL, NULL, b, - event ? event->button : 0, - event ? event->time : gtk_get_current_event_time ()); - return TRUE; - } - - return FALSE; -} - -static void -ephy_tb_button_button_popup_menu_cb (GtkWidget *w, EphyTbButton *b) -{ - EphyTbButtonPrivate *p = b->priv; - - g_signal_emit (b, EphyTbButtonSignals[EPHY_TB_BUTTON_MENU_ACTIVATED], 0); - gtk_menu_popup (p->menu, NULL, NULL, - ephy_gui_menu_position_under_widget, b, 0, gtk_get_current_event_time ()); -} - -void -ephy_tb_button_set_sensitivity (EphyTbButton *b, gboolean value) -{ - EphyTbButtonPrivate *p = b->priv; - - p->sensitive = value; - - if (!p->button) - { - ephy_tb_button_build (b); - } - else - { - gtk_widget_set_sensitive (p->button, value); - if (p->arrow_widget) - { - gtk_widget_set_sensitive (p->arrow_widget, value); - } - } -} - |