Completed
Last Updated: 15 Jan 2015 18:12 by ADMIN
To reproduce:
- add a dock with ToolWindow and DocumentWindow
- set the following properties:
        ToolWindow1.TabStrip.SizeInfo.SizeMode = Telerik.WinControls.UI.Docking.SplitPanelSizeMode.Absolute
        ToolWindow1.TabStrip.MaximumSize = New Size(94, 400)
        ToolWindow1.TabStrip.SizeInfo.AbsoluteSize = New Size(94, 400)
        ToolWindow1.DefaultFloatingSize = New Size(94, 400)

- Run the app, change the ToolWindow DockState to floating from context menu in the ToolWindow caption
- re-dock the ToolWindow => its sizi is not 94,400 and its SizeMode and AbsoluteSize properties have different values

If you perform the same scenario, but make the ToolWindow floating with drag and drop not with the context menu, everything works fine correctly.

WORKAROUND:
    Private Sub RadDock1_DockStateChanging(sender As Object, e As Telerik.WinControls.UI.Docking.DockStateChangingEventArgs)
        If e.NewWindow Is ToolWindow1 AndAlso e.NewDockState = Telerik.WinControls.UI.Docking.DockState.Docked Then
            e.NewWindow.TabStrip.SizeInfo.SizeMode = Telerik.WinControls.UI.Docking.SplitPanelSizeMode.Absolute
            e.NewWindow.TabStrip.MaximumSize = New Size(94, 400)
            e.NewWindow.TabStrip.SizeInfo.AbsoluteSize = New Size(94, 400)
            e.NewWindow.DefaultFloatingSize = New Size(94, 400)
        End If
    End Sub
Completed
Last Updated: 15 Jan 2015 18:00 by ADMIN
To reproduce:

Add a ToolWindow to RadDock. AutoHide it:

toolWindow1.AutoHide();

Then Hide it:

toolWindow1.Hide();

And show it:

toolWindow1.Show();

You will see that the window is docked but is not AutoHide

Workaround:

Call the AutoHide method instead of the Show method:

toolWindow1.AutoHide();
Completed
Last Updated: 15 Jan 2015 17:55 by ADMIN
To reproduce:

Add a few ToolWindows to RadDock and start the application. Drag one window out of the form and dock the others inside of it. Dock the window back to the RadDock. You will notice that only the current window will be docked leaving the rest of the windows floating. The correct behavior is the whole window with its child windows to be docked.

Workaround:

Subscribe to the DockStateChanging and DockStateChanged events and manually add the windows.

private IEnumerable<DockWindow> windows;
void RadDock_DockStateChanging(object sender, DockStateChangingEventArgs e)
{
    if (e.NewWindow.FloatingParent == null)
    {
        this.windows = Enumerable.Empty<DockWindow>();
        return;
    }


    this.windows = DockHelper.GetDockWindows(e.NewWindow.FloatingParent, true, this.RadDock).Where(x => x != e.NewWindow);
}


void RadDock_DockStateChanged(object sender, DockWindowEventArgs e)
{
    foreach (DockWindow window in windows)
    {
        this.RadDock.DockWindow(window, e.DockWindow.DockTabStrip, DockPosition.Fill);
    }
}
Completed
Last Updated: 15 Jan 2015 17:49 by ADMIN
If we set the AutoHideSize of a ToolWindow to the RadDock size, upon opening the AutoHide window we will notice that there is a gap of about 20px between the edge of RadDock and the AutoHide window.
Completed
Last Updated: 15 Jan 2015 17:43 by ADMIN
I put a tree on toolwindow (the tree Nodes are chekbox)  , when I autohide the toolwindow and show it again the font of tree nodes change and also the nodes which were checked change to uncheck
Completed
Last Updated: 15 Jan 2015 17:31 by ADMIN
To reproduce:
-add a RadDock with a ToolWindow
-add some controls inside the ToolWindow and anchor them to Left, Bottom, Right
-use RadDock Advanced layout designer to set the ToolWindow as unpinned.
-run the project and notice that when showing the ToolWindow its child controls are not positioned correctly (compared to at design time).

Workaround: use RadPanel docked to the ToolWindow as parent container and position all anchored controls inside it
Completed
Last Updated: 15 Jan 2015 17:27 by ADMIN
To reproduce:
Add a RadDock and a DockWindow, AutoHide it, add a RadPropertyGrid to its controls and dock it. Set the SelectedObject of the property grid to the current form and start the application. Edit the BackColor value and you will notice that the window will hide.
Completed
Last Updated: 15 Jan 2015 17:09 by ADMIN
Issue wirh loading layout from xml related to disposing mechanism in RadDock
Completed
Last Updated: 15 Jan 2015 16:57 by ADMIN
ADMIN
Created by: Alexander
Comments: 0
Category: Dock
Type: Bug Report
3
Hidden HostWindows are not loaded correctly when the load operation is performed twice.
Completed
Last Updated: 15 Jan 2015 16:41 by ADMIN
1. Create a new project with RadDock and add 5 tool windows.
2. Dock all tool windows to bottom.
3. Reset the order of the tool windows to not be 1-5
4. Set the group to auto-hide
5. Save dashboard layout
6. Load dashboard layout
Declined
Last Updated: 13 Dec 2014 15:44 by ADMIN
DECLINED: the issue is in the client's code.

To reproduce:

- add a dock with some windows

- save the layout with this code: 

           var stringWriter = new StringWriter();
           radDock1.SaveToXml(stringWriter);
           savedLayoutString = stringWriter.ToString(); //with this line you can save the same stream to a file and observe that it is saved with UTF-16

- load the layout with the following code:
            using (var stream = new MemoryStream())
            {
                var streamWriter = new StreamWriter(stream);
                streamWriter.Write(savedLayoutString);
                streamWriter.Flush();
                stream.Position = 0;
                radDock1.LoadFromXml(stream);
            }

Workaround - when reading the xml, replace utf-16 with utf-8
                 streamWriter.Write(File.ReadAllText("qqq.xml").Replace("utf-16", "utf-8"));
           

Completed
Last Updated: 28 Nov 2014 10:50 by ADMIN
To reproduce:

Me.RadDock1.DocumentTabsAlignment = Telerik.WinControls.UI.TabStripAlignment.Left
Me.RadDock1.DocumentTabsTextOrientation = Telerik.WinControls.UI.TabStripTextOrientation.Vertical

Please refer to the attached file.

Workaround:

Me.RadDock1.DocumentTabsAlignment = Telerik.WinControls.UI.TabStripAlignment.Left
Me.RadDock1.DocumentTabsTextOrientation = Telerik.WinControls.UI.TabStripTextOrientation.Vertical

For Each d As DocumentWindow In Me.RadDock1.DockWindows.DocumentWindows
    d.TabStripItem.AngleTransform = 180
Next
 
Or:
foreach (DocumentWindow d in this.radDock1.DockWindows.DocumentWindows)
{
    d.TabStripItem.FlipText = true ;
}
Completed
Last Updated: 27 Nov 2014 14:58 by ADMIN
To reproduce: 
1. Add several DocumentWindows and ToolWindows to the RadDock. 
2. Add RadButton controls to the available windows. 
3. Subscribe to the ActiveWindowChanged event.
4. Run the application and click over the strip item of one ToolWindow. As a result the ActiveWindowChanged  event is fired. Click over the RadButton for a DocumentWindow. You will notice that the ActiveWindowChanged  event is not fired. 

Note: When the active DocumentWindow contains controls ,e.g. RadButton, the tab strip item is not bold.

Workaround:

static RadDock dock;

public Form1()
{
    InitializeComponent();
    dock = this.radDock1;
    Application.AddMessageFilter(new MyFilterClass());
}

public const int WM_LBUTTONDOWN = 0x0201;

public class MyFilterClass : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {
        if (m.Msg == WM_LBUTTONDOWN)
        {
            Point pt = dock.PointToClient(Cursor.Position);
        
            var clickedElement = dock.GetChildAtPoint(pt, GetChildAtPointSkip.Invisible) ;
            while (!(clickedElement is ToolWindow || clickedElement is DocumentWindow) && clickedElement != null)
            {
                ToolTabStrip tabStrip = clickedElement as ToolTabStrip;
                if (tabStrip != null)
                {
                    clickedElement = tabStrip.ActiveWindow;
                }
                else
                {
                    clickedElement = clickedElement.GetChildAtPoint(pt,  GetChildAtPointSkip.Invisible);
                }
            }

            if (clickedElement != null)
            {
                dock.ActiveWindow = clickedElement as DockWindow;
            }
        }
        return false;
    }
}

private void radDock1_ActiveWindowChanged(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e)
{
    e.DockWindow.TabStripItem.Font = new Font(e.DockWindow.TabStripItem.Font, FontStyle.Bold);
    
    foreach (DocumentWindow dw in this.radDock1.DockWindows.DocumentWindows)
    {
        if (dw.Name != e.DockWindow.Name)
        {
            dw.TabStripItem.Font = new Font(e.DockWindow.TabStripItem.Font, FontStyle.Regular);
        }
    }
}
Completed
Last Updated: 27 Nov 2014 14:44 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Dock
Type: Bug Report
0
To reproduce :
1. Add three DocumentWindows.
2. Dock one of the windows to the top of the container.
3. The ActiveWindowChanged event is  fired but the window is not marked as active. Clicking on this window does not take affect and it is still not activated.

Please refer to the attached gif file.

Workaround:

public Form1()
{
    InitializeComponent();
    this.radDock1.ActiveWindowChanged += radDock1_ActiveWindowChanged;
    this.radDock1.DockStateChanged += radDock1_DockStateChanged;
}

private void radDock1_ActiveWindowChanged(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e)
{
    UpdateSelectedFont(e);
}

private void radDock1_DockStateChanged(object sender, Telerik.WinControls.UI.Docking.DockWindowEventArgs e)
{
    if (e.DockWindow.DockState == Telerik.WinControls.UI.Docking.DockState.Docked)
    {
        UpdateSelectedFont(e);
    }
}

private void UpdateSelectedFont(DockWindowEventArgs e)
{
    foreach (DockWindow dw in this.radDock1.DockWindows.DocumentWindows)
    {
        if (dw.TabStripItem.Text == e.DockWindow.TabStripItem.Text)
        {
            dw.TabStripItem.Font = new Font(dw.TabStripItem.Font, FontStyle.Bold);
        }
        else
        {
            dw.TabStripItem.Font = new Font(dw.TabStripItem.Font, FontStyle.Regular);
        }
    }
}
Completed
Last Updated: 13 Nov 2014 09:20 by ADMIN
To reproduce:
- Add RadDock with some document windows to a blank form.
- Make one widow floating and then remove the dock from the current form Controls collection on a button click.
Completed
Last Updated: 10 Nov 2014 09:00 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Dock
Type: Bug Report
1
To reproduce:
Use the BugTracker project from the {IntallationFolder}\Examples\BugTracker
1. Change the CloseAction for all DocumentWindows to "Hide".
2. Run the application.
3. Close tab "Bugs"
4. Save the layout, pressing the "Save" button ribbon tab "view"
5. Load the layout.
 You will notice that the "Bugs" tab is visible but in a invalid state.

Workaround: use  DocumentWindow.CloseAction = Close or call  DocumentWindow.Show method before loading the layout.
Completed
Last Updated: 10 Nov 2014 07:59 by ADMIN
These are the steps to reproduce the bug:

1. Start dragging a docked window tab (but don't leave the tab bounds for now).
2. While still holding the left mouse button, click the right mouse button to let the context menu appear.
3. Now drag the tab outside the tab bar until the window gets undocked (for example to the blue region above the docked windows).
4. Finish dragging by releasing the left mouse button.
5. Move the mouse cursor over the title bar of another docked window -> the window is undocked without interacting with it and will stick to the cursor until you click the mouse button to release it.

Workaround:
   bool flag = false;
        public Form1()
        {
            InitializeComponent();
            
            ContextMenuService menuService = this.radDock1.GetService<ContextMenuService>();
            menuService.ContextMenuDisplaying += menuService_ContextMenuDisplaying;

            DragDropService service = this.radDock1.GetService<DragDropService>();
            service.Starting += service_Starting;
        }

        void service_Starting(object sender, StateServiceStartingEventArgs e)
        {
            e.Cancel = flag;
            flag = false;
        }

        void menuService_ContextMenuDisplaying(object sender, ContextMenuDisplayingEventArgs e)
        {
            flag = true;
        }
Completed
Last Updated: 06 Nov 2014 11:06 by ADMIN
To reproduce:

Add a few document windows to a RadDock. Start the application and start dragging a document window's tab, do not move the mouse much, you want to keep the red cursor. While at it press escape. The drag operation will be canceled. Now move your mouse over the tabs and you will notice that they will be dragged.

Workaround:

When the Drag service stops we need to reset some fields.

public Form1()
{
    InitializeComponent();


    foreach (Control child in ControlHelper.EnumChildControls(this.radDock1, true))
    {
        DocumentTabStrip docStrip = child as DocumentTabStrip;
        if (docStrip != null)
        {
            RadPageViewElement pageViewElement = docStrip.TabStripElement;
            pageViewElement.ItemDragService.Stopping += ItemDragService_Stopping;
            pageViewElement.ItemDragService.Started += ItemDragService_Started;
            break;
        }
    }
}


void ItemDragService_Started(object sender, EventArgs e)
{
    foreach (DockTabStrip strip in DockHelper.GetDockTabStrips<DockTabStrip>(this, true, this.radDock1))
    {
        strip.MouseDown += strip_MouseDown;
        strip.MouseUp += strip_MouseUp;
        strip.MouseCaptureChanged += strip_MouseCaptureChanged;
        strip.MouseMove += strip_MouseMove;
    }
}


void ItemDragService_Stopping(object sender, RadServiceStoppingEventArgs e)
{
    foreach (DockTabStrip strip in DockHelper.GetDockTabStrips<DockTabStrip>(this, true, this.radDock1))
    {
        strip.MouseDown -= strip_MouseDown;
        strip.MouseUp -= strip_MouseUp;
        strip.MouseCaptureChanged -= strip_MouseCaptureChanged;
        strip.MouseMove -= strip_MouseMove;


        strip.GetType().GetMethod("OnMouseCaptureChanged", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(strip, new object[] { EventArgs.Empty });
        typeof(TabStripPanel).GetField("dragStart", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(strip, Point.Empty);
    }
}


void strip_MouseMove(object sender, MouseEventArgs e)
{
    if (this.isMouseDown.ContainsKey(sender) && !this.isMouseDown[sender])
    {
        sender.GetType().BaseType.BaseType.GetField("dragging", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(sender, true);
    }
}


Dictionary<object, bool> isMouseDown = new Dictionary<object, bool>();
void strip_MouseCaptureChanged(object sender, EventArgs e)
{
    this.isMouseDown[sender] = false;
}


void strip_MouseUp(object sender, MouseEventArgs e)
{
    this.isMouseDown[sender] = false;
}


void strip_MouseDown(object sender, MouseEventArgs e)
{
    this.isMouseDown[sender] = true;
}

Completed
Last Updated: 28 Oct 2014 15:29 by ADMIN
To reproduce:
- Dock a tool window in a black RadDock.
- Drag and drop the toolwindow in the top, bottom, right or left docking guides in the center.
- The tool window is docked as document window and fills the entire space.

Workaround:
public Form1()
{
    InitializeComponent();
    DragDropService service = this.radDock1.GetService<DragDropService>();

    service.PreviewHitTest += service_PreviewHitTest;
    
    radDock1.DockStateChanged += radDock1_DockStateChanged;
}

void radDock1_DockStateChanged(object sender, DockWindowEventArgs e)
{
    if (dropTarget is DocumentContainer)
    {
        if (position != null && position != "Fill")
        {
            e.DockWindow.DockState = DockState.Docked;
            switch (position)
            {
                case "Top":
                    radDock1.DockWindow(e.DockWindow, DockPosition.Top);
                    break;
                case "Left":
                    radDock1.DockWindow(e.DockWindow, DockPosition.Left);

                    break;
                case "Right":
                    radDock1.DockWindow(e.DockWindow, DockPosition.Right);

                    break;
                case "Bottom":
                    radDock1.DockWindow(e.DockWindow, DockPosition.Bottom);
                    break;
            }
            position = null;
        }
    }
}

string position = null;
object dropTarget = null;

void service_PreviewHitTest(object sender, DragDropHitTestEventArgs e)
{
    if (e.HitTest.GuidePosition != null)
    {
        dropTarget = e.DropTarget;
        position = e.HitTest.DockPosition.Value.ToString();
        Console.WriteLine(e.DropTarget);
    }
}
Completed
Last Updated: 20 Oct 2014 14:29 by ADMIN
To reproduce:

Use the following methods which adds host windows to ToolTabStrip and set the ShowItemCloseButton:

private void AddDocumentStrip()
{
    // Create and add a document strip to the dock.
    this.documentstrip = new ToolTabStrip();
    this.documentstrip.TabStripAlignment = TabStripAlignment.Top;
    this.documentstrip.CaptionVisible = false;
    this.documentstrip.ActionMenuButton.Visibility = ElementVisibility.Hidden;
    this.DocumentDock.Controls.Add(documentstrip);
    this.DocumentDock.ShowToolCloseButton = true;
}

private void radCommandBar1_Click(object sender, EventArgs e)
{
    RadForm testdoc = new RadForm();

    // Create a hostwindow to hold the document (so can interact with the dock)
    HostWindow hostwindow = new HostWindow();
    hostwindow.Text = "Document " + DocumentDock.DockWindows.Count.ToString();
    hostwindow.ToolCaptionButtons = ToolStripCaptionButtons.Close;

    // Load the document into the host window
    hostwindow.LoadContent(testdoc);

    // Set the floating size when it is undocked
    Size size = new Size(660, 440);
    hostwindow.DefaultFloatingSize = size;

    // Make sure a closed document releases its resources
    hostwindow.CloseAction = DockWindowCloseAction.CloseAndDispose;

    // Check if we are opening our first document, requires additional setup
    //if (currentdocuments.Count == 0)
    if (DocumentDock.ActiveWindow == null)
    {
        if (this.DocumentDock.Controls.Count < 2)
        {
            this.documentstrip.Controls.Add(hostwindow);
            this.documentstrip.CaptionVisible = true;
            this.DocumentDock.Controls.Add(documentstrip);
            this.DocumentDock.ShowToolCloseButton = true;
        }
        else
        {
            ((ToolTabStrip)this.DocumentDock.Controls[1]).Controls.Add(hostwindow);
            ((ToolTabStrip)this.DocumentDock.Controls[1]).CaptionVisible = true;
            this.DocumentDock.ShowToolCloseButton = true;
        }
    }
    else
    {
        documentstrip.Controls.Add(hostwindow);
        documentstrip.Show();
    }
    this.documentstrip.Text = "Document " + DocumentDock.DockWindows.Count.ToString();

    //Bring Analyzer to the front
    this.Activate();
}


Click the button a few times, close all windows and click again. You will notice that the close button will not be visible in the new windows.

Alternatively, you can download the sample project.

Workaround:

Manually set the ShowItemCloseButton property to each child ToolTabStrip:

private void AddDocumentStrip()
{
    // Create and add a document strip to the dock.
    this.documentstrip = new ToolTabStrip();
    this.documentstrip.TabStripAlignment = TabStripAlignment.Top;
    this.documentstrip.CaptionVisible = false;
    this.documentstrip.ActionMenuButton.Visibility = ElementVisibility.Hidden;
    this.DocumentDock.Controls.Add(documentstrip);
    this.DocumentDock.ShowToolCloseButton = true;
}

private void radCommandBar1_Click(object sender, EventArgs e)
{
    RadForm testdoc = new RadForm();

    // Create a hostwindow to hold the document (so can interact with the dock)
    HostWindow hostwindow = new HostWindow();
    hostwindow.Text = "Document " + DocumentDock.DockWindows.Count.ToString();
    hostwindow.ToolCaptionButtons = ToolStripCaptionButtons.Close;

    // Load the document into the host window
    hostwindow.LoadContent(testdoc);

    // Set the floating size when it is undocked
    Size size = new Size(660, 440);
    hostwindow.DefaultFloatingSize = size;

    // Make sure a closed document releases its resources
    hostwindow.CloseAction = DockWindowCloseAction.CloseAndDispose;

    // Check if we are opening our first document, requires additional setup
    //if (currentdocuments.Count == 0)
    if (DocumentDock.ActiveWindow == null)
    {
        if (this.DocumentDock.Controls.Count < 2)
        {
            this.documentstrip.Controls.Add(hostwindow);
            this.documentstrip.CaptionVisible = true;
            this.DocumentDock.Controls.Add(documentstrip);
            this.DocumentDock.ShowToolCloseButton = true;
        }
        else
        {
            ((ToolTabStrip)this.DocumentDock.Controls[1]).Controls.Add(hostwindow);
            ((ToolTabStrip)this.DocumentDock.Controls[1]).CaptionVisible = true;
            foreach (ToolTabStrip strip in this.DocumentDock.EnumFrameworkControls<ToolTabStrip>())
            {
                strip.ShowItemCloseButton = true;
            }
        }
    }
    else
    {
        documentstrip.Controls.Add(hostwindow);
        documentstrip.Show();
    }
    this.documentstrip.Text = "Document " + DocumentDock.DockWindows.Count.ToString();

    //Bring Analyzer to the front
    this.Activate();
}