]> www.fi.muni.cz Git - evince.git/blobdiff - libview/ev-view.c
Replace GTK_WIDGET_REALIZED() with gtk_widget_get_realized()
[evince.git] / libview / ev-view.c
index 334cb9bac46a5cfaa23aa8f2de174bb16460cf6b..2837f0fd623c336a782b1dec197f19c77b285243 100644 (file)
 #define EV_IS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EV_TYPE_VIEW))
 #define EV_VIEW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EV_TYPE_VIEW, EvViewClass))
 
-enum {
-       PROP_0,
-       PROP_HAS_SELECTION
-};
-
 enum {
        SIGNAL_BINDING_ACTIVATED,
        SIGNAL_HANDLE_LINK,
        SIGNAL_EXTERNAL_LINK,
        SIGNAL_POPUP_MENU,
-       N_SIGNALS,
+       SIGNAL_SELECTION_CHANGED,
+       N_SIGNALS
 };
 
 enum {
@@ -217,10 +213,6 @@ static void       on_adjustment_value_changed                (GtkAdjustment
 /*** GObject ***/
 static void       ev_view_finalize                           (GObject            *object);
 static void       ev_view_destroy                            (GtkObject          *object);
-static void       ev_view_get_property                       (GObject            *object,
-                                                             guint               prop_id,
-                                                             GValue             *value,
-                                                             GParamSpec         *pspec);
 static void       ev_view_class_init                         (EvViewClass        *class);
 static void       ev_view_init                               (EvView             *view);
 
@@ -3104,29 +3096,26 @@ ev_view_do_popup_menu (EvView *view,
                       gdouble x,
                       gdouble y)
 {
+       GList        *items = NULL;
        EvLink       *link;
        EvImage      *image;
        EvAnnotation *annot;
 
        image = ev_view_get_image_at_location (view, x, y);
-       if (image) {
-               g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, image);
-               return TRUE;
-       }
+       if (image)
+               items = g_list_prepend (items, image);
 
        link = ev_view_get_link_at_location (view, x, y);
-       if (link) {
-               g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, link);
-               return TRUE;
-       }
+       if (link)
+               items = g_list_prepend (items, link);
 
        annot = ev_view_get_annotation_at_location (view, x, y);
-       if (annot) {
-               g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, annot);
-               return TRUE;
-       }
+       if (annot)
+               items = g_list_prepend (items, annot);
+
+       g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, items);
 
-       g_signal_emit (view, signals[SIGNAL_POPUP_MENU], 0, NULL);
+       g_list_free (items);
 
        return TRUE;
 }
@@ -3261,7 +3250,7 @@ ev_view_button_press_event (GtkWidget      *widget,
        if (!view->document)
                return FALSE;
        
-       if (!GTK_WIDGET_HAS_FOCUS (widget)) {
+       if (!gtk_widget_has_focus (widget)) {
                gtk_widget_grab_focus (widget);
        }
 
@@ -3773,7 +3762,7 @@ ev_view_key_press_event (GtkWidget   *widget,
        if (!view->document)
                return FALSE;
 
-       if (!GTK_WIDGET_HAS_FOCUS (widget)) {
+       if (!gtk_widget_has_focus (widget)) {
                /* Forward key events to current focused window child */
                if (view->window_child_focus) {
                        GdkEventKey *new_event;
@@ -3931,7 +3920,7 @@ draw_loading_text (EvView       *view,
        gint     width, height;
 
        if (!view->loading_text) {
-               const gchar *loading_text = _("Loading...");
+               const gchar *loading_text = _("Loading");
                PangoLayout *layout;
                PangoFontDescription *font_desc;
                PangoRectangle logical_rect;
@@ -4206,24 +4195,6 @@ ev_view_get_accessible (GtkWidget *widget)
        return GTK_WIDGET_CLASS (ev_view_parent_class)->get_accessible (widget);
 }
 
-static void
-ev_view_get_property (GObject *object,
-                     guint prop_id,
-                     GValue *value,
-                     GParamSpec *pspec)
-{
-       EvView *view = EV_VIEW (object);
-
-       switch (prop_id) {
-               case PROP_HAS_SELECTION:
-                       g_value_set_boolean (value,
-                                            view->selection_info.selections != NULL);
-                       break;
-               default:
-                       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-       }
-}
-
 static void
 ev_view_class_init (EvViewClass *class)
 {
@@ -4234,7 +4205,6 @@ ev_view_class_init (EvViewClass *class)
        GtkBindingSet *binding_set;
 
        object_class->finalize = ev_view_finalize;
-       object_class->get_property = ev_view_get_property;
 
        widget_class->expose_event = ev_view_expose_event;
        widget_class->button_press_event = ev_view_button_press_event;
@@ -4292,18 +4262,17 @@ ev_view_class_init (EvViewClass *class)
                         G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
                         G_STRUCT_OFFSET (EvViewClass, popup_menu),
                         NULL, NULL,
-                        g_cclosure_marshal_VOID__OBJECT,
+                        g_cclosure_marshal_VOID__POINTER,
                         G_TYPE_NONE, 1,
-                        G_TYPE_OBJECT);
-
-
-       g_object_class_install_property (object_class,
-                                        PROP_HAS_SELECTION,
-                                        g_param_spec_boolean ("has-selection",
-                                                              "Has selection",
-                                                              "The view has selections",
-                                                              FALSE,
-                                                              G_PARAM_READABLE));
+                        G_TYPE_POINTER);
+       signals[SIGNAL_SELECTION_CHANGED] = g_signal_new ("selection-changed",
+                         G_TYPE_FROM_CLASS (object_class),
+                         G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+                         G_STRUCT_OFFSET (EvViewClass, selection_changed),
+                         NULL, NULL,
+                        g_cclosure_marshal_VOID__VOID,
+                         G_TYPE_NONE, 0,
+                         G_TYPE_NONE);
 
        binding_set = gtk_binding_set_by_class (class);
 
@@ -4412,7 +4381,7 @@ on_adjustment_value_changed (GtkAdjustment *adjustment,
        gint x, y;
        GList *children, *l;
 
-       if (! GTK_WIDGET_REALIZED (view))
+       if (!gtk_widget_get_realized (GTK_WIDGET (view)))
                return;
 
        if (view->hadjustment) {
@@ -5345,7 +5314,7 @@ merge_selection_region (EvView *view,
        g_list_free (view->selection_info.selections);
        view->selection_info.selections = new_list;
        ev_pixbuf_cache_set_selection_list (view->pixbuf_cache, new_list);
-       g_object_notify (G_OBJECT (view), "has-selection");
+       g_signal_emit (view, signals[SIGNAL_SELECTION_CHANGED], 0, NULL);
 
        new_list_ptr = new_list;
        old_list_ptr = old_list;
@@ -5395,7 +5364,7 @@ merge_selection_region (EvView *view,
                                                               view->scale,
                                                               &tmp_region);
 
-                       if (tmp_region) {
+                       if (tmp_region && !gdk_region_empty (tmp_region)) {
                                new_sel->covered_region = gdk_region_copy (tmp_region);
                        }
                }
@@ -5482,13 +5451,16 @@ selection_free (EvViewSelection *selection)
 static void
 clear_selection (EvView *view)
 {
-       g_list_foreach (view->selection_info.selections, (GFunc)selection_free, NULL);
-       g_list_free (view->selection_info.selections);
-       view->selection_info.selections = NULL;
+       if (view->selection_info.selections) {
+               g_list_foreach (view->selection_info.selections, (GFunc)selection_free, NULL);
+               g_list_free (view->selection_info.selections);
+               view->selection_info.selections = NULL;
+
+               g_signal_emit (view, signals[SIGNAL_SELECTION_CHANGED], 0, NULL);
+       }
        view->selection_info.in_selection = FALSE;
        if (view->pixbuf_cache)
                ev_pixbuf_cache_set_selection_list (view->pixbuf_cache, NULL);
-       g_object_notify (G_OBJECT (view), "has-selection");
 }
 
 void