]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-navigation-action-widget.c
Replace GTK_WIDGET_VISIBLE() with gtk_widget_get_visible()
[evince.git] / shell / ev-navigation-action-widget.c
index fafa5017cdeee0797c2b7d88996c6a481b877aca..a9a602336625eee506b3fba793dd992fccaf9aee 100644 (file)
@@ -27,7 +27,8 @@ static void  ev_navigation_action_widget_init       (EvNavigationActionWidget
 static void  ev_navigation_action_widget_class_init (EvNavigationActionWidgetClass *action_widget);
 static void ev_navigation_action_widget_toggled (GtkToggleToolButton *toggle);
 static gboolean ev_navigation_action_widget_button_press_event (GtkWidget *widget,
-                                                            GdkEventButton    *event);
+                                                               GdkEventButton    *event, 
+                                                               gpointer data);
 
 G_DEFINE_TYPE (EvNavigationActionWidget, ev_navigation_action_widget, GTK_TYPE_TOGGLE_TOOL_BUTTON)
 
@@ -42,19 +43,27 @@ static gint signals[LAST_SIGNAL];
 static void
 ev_navigation_action_widget_init (EvNavigationActionWidget *action_widget)
 {
+       GtkWidget *toggle_button;
+       
+       /* It's rather dirty hack but we need a child to connect to
+        * button press event
+        */
+               
+       toggle_button = gtk_bin_get_child (GTK_BIN (action_widget));
+       
+       g_signal_connect (toggle_button, "button-press-event", 
+                         G_CALLBACK (ev_navigation_action_widget_button_press_event),
+                         action_widget);
        return;
 }
 
 static void
 ev_navigation_action_widget_class_init (EvNavigationActionWidgetClass *klass)
 {
-       GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
        GtkToggleToolButtonClass *toggle_tool_button_class = GTK_TOGGLE_TOOL_BUTTON_CLASS (klass);
 
-       widget_class->button_press_event = ev_navigation_action_widget_button_press_event;
        toggle_tool_button_class->toggled = ev_navigation_action_widget_toggled;
 
-
        signals[SHOW_MENU] =
                  g_signal_new ("show-menu",
                                G_OBJECT_CLASS_TYPE (klass),
@@ -89,7 +98,7 @@ ev_navigation_action_widget_set_menu(EvNavigationActionWidget *button, GtkWidget
       if (button->menu == GTK_MENU (menu))
                return;
        
-      if (button->menu && GTK_WIDGET_VISIBLE (button->menu))
+      if (button->menu && gtk_widget_get_visible (GTK_WIDGET (button->menu)))
                gtk_menu_shell_deactivate (GTK_MENU_SHELL (button->menu));
 
       if (button->menu) {
@@ -177,7 +186,7 @@ ev_navigation_action_widget_toggled (GtkToggleToolButton *toggle)
                return;
 
        if (gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (button)) &&
-           !GTK_WIDGET_VISIBLE (button->menu)) {
+           !gtk_widget_get_visible (GTK_WIDGET (button->menu))) {
                      /* we get here only when the menu is activated by a key
                       * press, so that we can select the first menu item */
                      popup_menu_under_arrow (button, NULL);
@@ -187,9 +196,11 @@ ev_navigation_action_widget_toggled (GtkToggleToolButton *toggle)
 
 static gboolean
 ev_navigation_action_widget_button_press_event (GtkWidget *widget,
-                                               GdkEventButton    *event)
+                                               GdkEventButton    *event,
+                                               gpointer data)
 {
-       EvNavigationActionWidget *button = EV_NAVIGATION_ACTION_WIDGET (widget);
+       EvNavigationActionWidget *button = EV_NAVIGATION_ACTION_WIDGET (data);
+
        if (event->button == 1) {
                 popup_menu_under_arrow (button, event);
                 gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (button), TRUE);