forked from AuroraMiddleware/gtk
GtkStack: rtl flipping for animation
We switch slide-right and slight-left when in rtl.
This commit is contained in:
parent
e72a78c4e6
commit
88cd26575d
@ -736,6 +736,21 @@ gtk_stack_unschedule_ticks (GtkStack *stack)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GtkStackTransitionType
|
||||||
|
effective_transition_type (GtkStack *stack,
|
||||||
|
GtkStackTransitionType transition_type)
|
||||||
|
{
|
||||||
|
if (gtk_widget_get_direction (GTK_WIDGET (stack)) == GTK_TEXT_DIR_RTL)
|
||||||
|
{
|
||||||
|
if (transition_type == GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT)
|
||||||
|
return GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT;
|
||||||
|
else if (transition_type == GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT)
|
||||||
|
return GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return transition_type;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_stack_start_transition (GtkStack *stack,
|
gtk_stack_start_transition (GtkStack *stack,
|
||||||
GtkStackTransitionType transition_type,
|
GtkStackTransitionType transition_type,
|
||||||
@ -760,7 +775,7 @@ gtk_stack_start_transition (GtkStack *stack,
|
|||||||
priv->transition_pos = 0.0;
|
priv->transition_pos = 0.0;
|
||||||
priv->start_time = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget));
|
priv->start_time = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget));
|
||||||
priv->end_time = priv->start_time + (transition_duration * 1000);
|
priv->end_time = priv->start_time + (transition_duration * 1000);
|
||||||
priv->active_transition_type = transition_type;
|
priv->active_transition_type = effective_transition_type (stack, transition_type);
|
||||||
gtk_stack_schedule_ticks (stack);
|
gtk_stack_schedule_ticks (stack);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1397,7 +1412,8 @@ gtk_stack_draw (GtkWidget *widget,
|
|||||||
priv->last_visible_surface_allocation.height);
|
priv->last_visible_surface_allocation.height);
|
||||||
pattern_cr = cairo_create (priv->last_visible_surface);
|
pattern_cr = cairo_create (priv->last_visible_surface);
|
||||||
/* We don't use propagate_draw here, because we don't want to apply
|
/* We don't use propagate_draw here, because we don't want to apply
|
||||||
the bin_window offset */
|
* the bin_window offset
|
||||||
|
*/
|
||||||
gtk_widget_draw (priv->last_visible_child->widget, pattern_cr);
|
gtk_widget_draw (priv->last_visible_child->widget, pattern_cr);
|
||||||
cairo_destroy (pattern_cr);
|
cairo_destroy (pattern_cr);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user