X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libview%2Fev-view.c;h=760cf04ffdcf67ca6f431d3b7c13872755db72eb;hb=8cf21129418452a327f4761b9bcf1ccd0fc7a5e8;hp=334cb9bac46a5cfaa23aa8f2de174bb16460cf6b;hpb=1ffe54671c4d242e9698f1a07276552dfdabcd07;p=evince.git diff --git a/libview/ev-view.c b/libview/ev-view.c index 334cb9ba..760cf04f 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -47,17 +47,13 @@ #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); @@ -3931,7 +3923,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 +4198,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 +4208,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; @@ -4295,15 +4268,14 @@ ev_view_class_init (EvViewClass *class) g_cclosure_marshal_VOID__OBJECT, 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)); + 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); @@ -5345,7 +5317,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 +5367,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 +5454,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