diff options
Diffstat (limited to 'meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff')
-rw-r--r-- | meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff b/meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff new file mode 100644 index 0000000..b99d346 --- /dev/null +++ b/meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtktoolbar.c.diff @@ -0,0 +1,252 @@ +--- gtk+-2.6.4/gtk/gtktoolbar.c 2004-11-23 06:11:15.000000000 +0200 ++++ gtk+-2.6.4/gtk/gtktoolbar.c 2005-04-06 16:19:38.166736136 +0300 +@@ -67,7 +67,9 @@ + + #define DEFAULT_ICON_SIZE GTK_ICON_SIZE_LARGE_TOOLBAR + #define DEFAULT_TOOLBAR_STYLE GTK_TOOLBAR_BOTH ++#define DEFAULT_ANIMATION_STATE FALSE + ++#define DEFAULT_MAX_CHILD_SPACING G_MAXINT + #define MAX_HOMOGENEOUS_N_CHARS 13 /* Items that are wider than this do not participate + * in the homogeneous game. In units of + * pango_font_get_estimated_char_width(). +@@ -140,10 +142,14 @@ + + GTimer * timer; + ++ guint animation_connection; ++ + guint show_arrow : 1; + guint need_sync : 1; + guint is_sliding : 1; + guint need_rebuild : 1; /* whether the overflow menu should be regenerated */ ++ guint animation_set : 1; ++ guint animation : 1; + }; + + static void gtk_toolbar_init (GtkToolbar *toolbar); +@@ -225,9 +231,11 @@ + static void gtk_toolbar_reconfigured (GtkToolbar *toolbar); + static gboolean gtk_toolbar_check_new_api (GtkToolbar *toolbar); + static gboolean gtk_toolbar_check_old_api (GtkToolbar *toolbar); ++static void gtk_toolbar_update_animation_state (GtkToolbar *toolbar); + + static GtkReliefStyle get_button_relief (GtkToolbar *toolbar); + static gint get_internal_padding (GtkToolbar *toolbar); ++static gint get_max_child_expand (GtkToolbar *toolbar); + static GtkShadowType get_shadow_type (GtkToolbar *toolbar); + static gint get_space_size (GtkToolbar *toolbar); + static GtkToolbarSpaceStyle get_space_style (GtkToolbar *toolbar); +@@ -563,6 +571,15 @@ + G_PARAM_READABLE)); + + gtk_widget_class_install_style_property (widget_class, ++ g_param_spec_int ("max_child_expand", ++ P_("Maximum toolbar item spacing"), ++ P_("Maximum space between the toolbar items."), ++ 0, ++ G_MAXINT, ++ DEFAULT_MAX_CHILD_SPACING, ++ G_PARAM_READABLE)); ++ ++ gtk_widget_class_install_style_property (widget_class, + g_param_spec_enum ("space_style", + P_("Space style"), + P_("Whether spacers are vertical lines or just blank"), +@@ -598,6 +615,12 @@ + GTK_TYPE_ICON_SIZE, + DEFAULT_ICON_SIZE, + G_PARAM_READWRITE)); ++ ++ gtk_settings_install_property (g_param_spec_boolean ("gtk-toolbar-animation", ++ P_("Toolbar animation"), ++ P_("Are we using toolbar animation"), ++ DEFAULT_ANIMATION_STATE, ++ G_PARAM_READWRITE)); + + binding_set = gtk_binding_set_by_class (klass); + +@@ -638,6 +661,7 @@ + toolbar->orientation = GTK_ORIENTATION_HORIZONTAL; + toolbar->style = DEFAULT_TOOLBAR_STYLE; + toolbar->icon_size = DEFAULT_ICON_SIZE; ++ priv->animation = DEFAULT_ANIMATION_STATE; + toolbar->tooltips = gtk_tooltips_new (); + g_object_ref (toolbar->tooltips); + gtk_object_sink (GTK_OBJECT (toolbar->tooltips)); +@@ -960,7 +984,7 @@ + } + + static gint +-position (gint from, gint to, gdouble elapsed) ++position (GtkToolbar *toolbar, gint from, gint to, gdouble elapsed) + { + gint n_pixels; + +@@ -978,11 +1002,20 @@ + n_pixels = (SLIDE_SPEED / ACCEL_THRESHOLD) * elapsed * elapsed - + SLIDE_SPEED * elapsed + SLIDE_SPEED * ACCEL_THRESHOLD; + } +- +- if (to > from) +- return MIN (from + n_pixels, to); +- else +- return MAX (from - n_pixels, to); ++ if (GTK_TOOLBAR_GET_PRIVATE (toolbar)->animation) { ++ if (to > from) ++ return MIN (from + n_pixels, to); ++ else ++ return MAX (from - n_pixels, to); ++ } ++ return to; ++} ++ ++static GtkSettings * ++toolbar_get_settings (GtkToolbar *toolbar) ++{ ++ GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); ++ return priv->settings; + } + + static void +@@ -994,12 +1027,12 @@ + GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); + gdouble elapsed = g_timer_elapsed (priv->timer, NULL); + +- intermediate->x = position (start->x, goal->x, elapsed); +- intermediate->y = position (start->y, goal->y, elapsed); ++ intermediate->x = position (toolbar, start->x, goal->x, elapsed); ++ intermediate->y = position (toolbar, start->y, goal->y, elapsed); + intermediate->width = +- position (start->x + start->width, goal->x + goal->width, elapsed) - intermediate->x; ++ position (toolbar, start->x + start->width, goal->x + goal->width, elapsed) - intermediate->x; + intermediate->height = +- position (start->y + start->height, goal->y + goal->height, elapsed) - intermediate->y; ++ position (toolbar, start->y + start->height, goal->y + goal->height, elapsed) - intermediate->y; + } + + static void +@@ -1047,6 +1080,32 @@ + } + } + ++static void ++gtk_toolbar_update_animation_state (GtkToolbar *toolbar) ++{ ++ gboolean animation_state; ++ GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); ++ ++ g_return_if_fail (GTK_IS_TOOLBAR (toolbar)); ++ ++ if (priv->animation_set) ++ { ++ GtkSettings *settings = toolbar_get_settings (toolbar); ++ ++ if (settings) ++ { ++ g_object_get (settings, ++ "gtk-toolbar-animation", &animation_state, ++ NULL); ++ } ++ else ++ animation_state = DEFAULT_ANIMATION_STATE; ++ ++ priv->animation = animation_state; ++ priv->animation_set = FALSE; ++ } ++} ++ + static gboolean + slide_idle_handler (gpointer data) + { +@@ -1537,10 +1596,14 @@ + + if (toolbar_content_get_expand (content) && new_states[i] == NORMAL) + { ++ gint mexpand = get_max_child_expand(toolbar); + gint extra = size / n_expand_items; + if (size % n_expand_items != 0) + extra++; +- ++ if (extra > mexpand) { ++ extra = mexpand; ++ } ++ + allocations[i].width += extra; + size -= extra; + n_expand_items--; +@@ -1932,11 +1995,16 @@ + } + } + +-static GtkSettings * +-toolbar_get_settings (GtkToolbar *toolbar) ++static void ++animation_change_notify (GtkToolbar *toolbar) + { + GtkToolbarPrivate *priv = GTK_TOOLBAR_GET_PRIVATE (toolbar); +- return priv->settings; ++ if (!priv->animation_set) ++ { ++ /* pretend it was set, then unset, thus reverting to new default */ ++ priv->animation_set = TRUE; ++ gtk_toolbar_update_animation_state (toolbar); ++ } + } + + static void +@@ -1960,6 +2028,7 @@ + { + g_signal_handler_disconnect (old_settings, toolbar->style_set_connection); + g_signal_handler_disconnect (old_settings, toolbar->icon_size_connection); ++ g_signal_handler_disconnect (old_settings, priv->animation_connection); + + g_object_unref (old_settings); + } +@@ -1976,6 +2045,11 @@ + "notify::gtk-toolbar-icon-size", + G_CALLBACK (icon_size_change_notify), + toolbar); ++ priv->animation_connection = ++ g_signal_connect_swapped (settings, ++ "notify::gtk-toolbar-animation", ++ G_CALLBACK (animation_change_notify), ++ toolbar); + + g_object_ref (settings); + priv->settings = settings; +@@ -1985,6 +2059,7 @@ + + style_change_notify (toolbar); + icon_size_change_notify (toolbar); ++ animation_change_notify (toolbar); + } + + static int +@@ -2913,7 +2988,7 @@ + * gtk_toolbar_get_icon_size: + * @toolbar: a #GtkToolbar + * +- * Retrieves the icon size fo the toolbar. See gtk_toolbar_set_icon_size(). ++ * Retrieves the icon size for the toolbar. See gtk_toolbar_set_icon_size(). + * + * Return value: the current icon size for the icons on the toolbar. + **/ +@@ -4642,6 +4717,17 @@ + return ipadding; + } + ++static gint ++get_max_child_expand (GtkToolbar *toolbar) ++{ ++ gint mexpand = DEFAULT_MAX_CHILD_SPACING; ++ ++ gtk_widget_style_get (GTK_WIDGET (toolbar), ++ "max_child_expand", &mexpand, ++ NULL); ++ return mexpand; ++} ++ + static GtkShadowType + get_shadow_type (GtkToolbar *toolbar) + { |