summaryrefslogtreecommitdiff
path: root/src/eog-zoom-entry.c
diff options
context:
space:
mode:
authorFelix Riemann <friemann@gnome.org>2017-02-15 20:33:05 +0100
committerFelix Riemann <friemann@gnome.org>2017-02-15 20:33:05 +0100
commit788ec755964bddc5cea58f2a7ab45569d28afb94 (patch)
tree658e92369d208041722ad842c9ee9c7f1c3294d0 /src/eog-zoom-entry.c
parent695f5e302caebcb7c659572c7a35feb822ba26bc (diff)
downloadeog-788ec755964bddc5cea58f2a7ab45569d28afb94.tar.gz
EogZoomEntry: Disable the entry if no zooming is possible
Diffstat (limited to 'src/eog-zoom-entry.c')
-rw-r--r--src/eog-zoom-entry.c36
1 files changed, 34 insertions, 2 deletions
diff --git a/src/eog-zoom-entry.c b/src/eog-zoom-entry.c
index 2edd38cd..02bb78df 100644
--- a/src/eog-zoom-entry.c
+++ b/src/eog-zoom-entry.c
@@ -74,10 +74,9 @@ static const struct {
G_DEFINE_TYPE_WITH_PRIVATE (EogZoomEntry, eog_zoom_entry, GTK_TYPE_BOX);
-//static guint signals[LAST_SIGNAL] = { 0 };
-
static void eog_zoom_entry_reset_zoom_level (EogZoomEntry *entry);
static void eog_zoom_entry_set_zoom_level (EogZoomEntry *entry, gdouble zoom);
+static void eog_zoom_entry_update_sensitivity (EogZoomEntry *entry);
static void
@@ -198,6 +197,16 @@ eog_zoom_entry_view_zoom_changed_cb (EogScrollView *view, gdouble zoom,
}
static void
+button_sensitivity_changed_cb (GObject *gobject,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ g_return_if_fail (EOG_IS_ZOOM_ENTRY (user_data));
+
+ eog_zoom_entry_update_sensitivity (EOG_ZOOM_ENTRY (user_data));
+}
+
+static void
eog_zoom_entry_constructed (GObject *object)
{
EogZoomEntry *zoom_entry = EOG_ZOOM_ENTRY (object);
@@ -214,6 +223,14 @@ eog_zoom_entry_constructed (GObject *object)
g_menu_model_get_item_link (G_MENU_MODEL (zoom_entry->priv->menu),
1, G_MENU_LINK_SECTION);
eog_zoom_entry_populate_free_zoom_section (zoom_entry);
+
+ g_signal_connect (zoom_entry->priv->btn_zoom_in, "notify::sensitive",
+ G_CALLBACK (button_sensitivity_changed_cb),
+ zoom_entry);
+ g_signal_connect (zoom_entry->priv->btn_zoom_out, "notify::sensitive",
+ G_CALLBACK (button_sensitivity_changed_cb),
+ zoom_entry);
+ eog_zoom_entry_update_sensitivity (zoom_entry);
}
static void
@@ -271,6 +288,21 @@ eog_zoom_entry_reset_zoom_level (EogZoomEntry *entry)
}
static void
+eog_zoom_entry_update_sensitivity (EogZoomEntry *entry)
+{
+ const gboolean current_state =
+ gtk_widget_is_sensitive (entry->priv->value_entry);
+ const gboolean new_state =
+ gtk_widget_is_sensitive (entry->priv->btn_zoom_in)
+ | gtk_widget_is_sensitive (entry->priv->btn_zoom_out);
+
+ if (current_state != new_state) {
+ gtk_widget_set_sensitive (entry->priv->value_entry, new_state);
+ }
+
+}
+
+static void
eog_zoom_entry_class_init (EogZoomEntryClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);