diff options
author | raveit65 <[email protected]> | 2016-10-16 07:36:03 +0200 |
---|---|---|
committer | raveit65 <[email protected]> | 2016-10-17 06:14:45 +0200 |
commit | a7ef765a1c9f1d7796a4e168ae2398af2368d3ad (patch) | |
tree | 28b95487ca998d5d2c73036be2f374d74cdec40a | |
parent | bd47a43c073a6938a25d9b8f98ff70e73a09a747 (diff) | |
download | caja-a7ef765a1c9f1d7796a4e168ae2398af2368d3ad.tar.bz2 caja-a7ef765a1c9f1d7796a4e168ae2398af2368d3ad.tar.xz |
Gtk+-2: add eel_gtk_adjustment* functions again
This reverts https://github.com/mate-desktop/caja/commit/f02d495 for gtk2
fixes https://github.com/mate-desktop/caja/issues/659
-rw-r--r-- | eel/eel-gtk-extensions.c | 34 | ||||
-rw-r--r-- | eel/eel-gtk-extensions.h | 7 |
2 files changed, 40 insertions, 1 deletions
diff --git a/eel/eel-gtk-extensions.c b/eel/eel-gtk-extensions.c index e451bdbf..4969d7aa 100644 --- a/eel/eel-gtk-extensions.c +++ b/eel/eel-gtk-extensions.c @@ -353,6 +353,40 @@ eel_gtk_menu_tool_button_get_button (GtkMenuToolButton *tool_button) return button; } +#if !GTK_CHECK_VERSION (3, 0, 0) +/* The standard gtk_adjustment_set_value ignores page size, which + * disagrees with the logic used by scroll bars, for example. + */ +void +eel_gtk_adjustment_set_value (GtkAdjustment *adjustment, + float value) +{ + float upper_page_start, clamped_value; + + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); + + upper_page_start = MAX (gtk_adjustment_get_upper (adjustment) - + gtk_adjustment_get_page_size (adjustment), + gtk_adjustment_get_lower (adjustment)); + clamped_value = CLAMP (value, gtk_adjustment_get_lower (adjustment), upper_page_start); + if (clamped_value != gtk_adjustment_get_value (adjustment)) + { + gtk_adjustment_set_value (adjustment, clamped_value); + gtk_adjustment_value_changed (adjustment); + } +} + +/* Clamp a value if the minimum or maximum has changed. */ +void +eel_gtk_adjustment_clamp_value (GtkAdjustment *adjustment) +{ + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); + + eel_gtk_adjustment_set_value (adjustment, + gtk_adjustment_get_value (adjustment)); +} +#endif + /** * eel_gtk_label_make_bold. * diff --git a/eel/eel-gtk-extensions.h b/eel/eel-gtk-extensions.h index aec680f3..fd85c2db 100644 --- a/eel/eel-gtk-extensions.h +++ b/eel/eel-gtk-extensions.h @@ -63,7 +63,12 @@ GtkWidget * eel_gtk_menu_tool_button_get_button (GtkMenuTo /* GtkLabel */ void eel_gtk_label_make_bold (GtkLabel *label); - +#if !GTK_CHECK_VERSION (3, 0, 0) +/* GtkAdjustment */ +void eel_gtk_adjustment_set_value (GtkAdjustment *adjustment, + float value); +void eel_gtk_adjustment_clamp_value (GtkAdjustment *adjustment); +#endif /* GtkTreeView */ void eel_gtk_tree_view_set_activate_on_single_click (GtkTreeView *tree_view, gboolean should_activate); |