Completed
Last Updated: 15 Aug 2017 11:03 by ADMIN
ADMIN
Dess | Tech Support Engineer, Principal
Created on: 26 May 2017 12:26
Category: Scheduler/Reminder
Type: Bug Report
1
FIX. RadScheduler - resizing appointments in right to left mode works in reversed direction
To reproduce:
            this.radScheduler1.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Timeline;
            this.radScheduler1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;

Please refer to the attached gif file. Select the left border of an appointment and try to resize it to the left. You will notice that you are allowed to resize it to the right and vice versa.

Workaround:           this.radScheduler1.SchedulerElement.ResizeBehavior = new MyResizingBehavior(this.radScheduler1.SchedulerElement);

public class MyResizingBehavior : AppointmentResizingBehavior
{
    RadScheduler scheduler;

    public MyResizingBehavior(SchedulerVisualElement activeOwner)
        : base(activeOwner)
    {
        scheduler = activeOwner.Scheduler;
    }

    protected override bool UpdateMouseCursor(Point mousePosition, Rectangle nearRect, Rectangle farRect)
    {
        bool result = base.UpdateMouseCursor(mousePosition, nearRect, farRect);
        if (scheduler.RightToLeft == RightToLeft.Yes )
        {
            FieldInfo leftFI = typeof(AppointmentResizingBehavior).GetField("leftResize", BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo rightFI = typeof(AppointmentResizingBehavior).GetField("rightResize", BindingFlags.NonPublic | BindingFlags.Instance);

            if (nearRect.Contains(mousePosition) && scheduler.Cursor == Cursors.SizeWE)
            {
                leftFI.SetValue(this, false);
                rightFI.SetValue(this, true);
            }
            else if (farRect.Contains(mousePosition) && scheduler.Cursor == Cursors.SizeWE)
            {
                leftFI.SetValue(this, true);
                rightFI.SetValue(this, false);
            }
        }
        return result;
    }
}
0 comments