Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libview/ev-view-private.h1
-rw-r--r--libview/ev-view.c52
-rw-r--r--shell/ev-window.c25
3 files changed, 24 insertions, 54 deletions
diff --git a/libview/ev-view-private.h b/libview/ev-view-private.h
index 4c2457e..09f6163 100644
--- a/libview/ev-view-private.h
+++ b/libview/ev-view-private.h
@@ -193,6 +193,7 @@ struct _EvViewClass {
EvLinkAction *action);
void (*popup_menu) (EvView *view,
EvLink *link);
+ void (*selection_changed) (EvView *view);
};
void _get_page_size_for_scale_and_rotation (EvDocument *document,
diff --git a/libview/ev-view.c b/libview/ev-view.c
index 334cb9b..7ef1dd8 100644
--- a/libview/ev-view.c
+++ b/libview/ev-view.c
@@ -48,16 +48,12 @@
#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);
@@ -4207,24 +4199,6 @@ ev_view_get_accessible (GtkWidget *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)
{
GObjectClass *object_class = G_OBJECT_CLASS (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;
@@ -5488,7 +5460,7 @@ clear_selection (EvView *view)
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");
+ g_signal_emit (view, signals[SIGNAL_SELECTION_CHANGED], 0, NULL);
}
void
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 086a4be..a22b961 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -854,6 +854,13 @@ view_handle_link_cb (EvView *view, EvLink *link, EvWindow *window)
}
static void
+view_selection_changed_cb (EvView *view,
+ EvWindow *window)
+{
+ ev_window_update_actions (window);
+}
+
+static void
ev_window_page_changed_cb (EvWindow *ev_window,
gint old_page,
gint new_page,
@@ -4153,12 +4160,6 @@ ev_window_inverted_colors_changed_cb (EvDocumentModel *model,
}
static void
-ev_window_has_selection_changed_cb (EvView *view, GParamSpec *pspec, EvWindow *window)
-{
- ev_window_update_actions (window);
-}
-
-static void
ev_window_dual_mode_changed_cb (EvDocumentModel *model,
GParamSpec *pspec,
EvWindow *ev_window)
@@ -6287,10 +6288,12 @@ ev_window_init (EvWindow *ev_window)
g_signal_connect_object (ev_window->priv->view, "handle-link",
G_CALLBACK (view_handle_link_cb),
ev_window, 0);
- g_signal_connect_object (ev_window->priv->view,
- "popup",
+ g_signal_connect_object (ev_window->priv->view, "popup",
G_CALLBACK (view_menu_popup_cb),
ev_window, 0);
+ g_signal_connect_object (ev_window->priv->view, "selection-changed",
+ G_CALLBACK (view_selection_changed_cb),
+ ev_window, 0);
gtk_widget_show (ev_window->priv->view);
gtk_widget_show (ev_window->priv->password_view);
@@ -6336,16 +6339,10 @@ ev_window_init (EvWindow *ev_window)
"notify::dual-page",
G_CALLBACK (ev_window_dual_mode_changed_cb),
ev_window);
-
- /* Connect to view signals */
g_signal_connect (ev_window->priv->model,
"notify::inverted-colors",
G_CALLBACK (ev_window_inverted_colors_changed_cb),
ev_window);
- g_signal_connect (ev_window->priv->view,
- "notify::has-selection",
- G_CALLBACK (ev_window_has_selection_changed_cb),
- ev_window);
/* Connect sidebar signals */
g_signal_connect (ev_window->priv->sidebar,