FIX. RadDock - arranging DocumentWindows tabs in design time is not possible.
To reproduce: Add RadDock to a form. Add a few DocumentWindows. Drag a tab among the other tabs and you will see how the cursor is a different, that is normal. Drag a tab to the content area of the document window and you will see the docking guides. Now if you drag the tab again over the other tabs you will see that the docking guides are still visible and the cursor is not changing (except if you drag outside of the dock). Resolution: 1. Inherit RadPageViewInDockDragDropService and override the UpdateCursor virtual method. class MyDragDropService : RadPageViewInDockDragDropService { RadPageViewElement owner; public MyDragDropService(RadPageViewElement owner) : base(owner) { this.owner = owner; } protected override void UpdateCursor(Point mousePos) { RadPageViewStripElement stripElement = this.owner as RadPageViewStripElement; if (stripElement == null) { return; } if (!this.processing) { //Cursor.Current = Cursors.Default; return; } Point mousePt = Control.MousePosition; if (this.owner.IsInValidState(true)) { mousePt = this.owner.ElementTree.Control.PointToClient(mousePt); } else { mousePt = mousePos; } if (!stripElement.ItemContainer.ControlBoundingRectangle.Contains(mousePt)) { Cursor.Current = Cursors.Default; base.HintWindow.BackgroundImage = null; base.HintWindow.Hide(); this.processing = false; } } } 2. Change the nested PageView in RadDock public Form2() { InitializeComponent(); radDock1.GetService<DragDropService>().Starting += (sender, args) => { if ((sender as DragDropService).DragDropContext == DragDropContext.DocumentWindow) { args.Cancel = true; } }; foreach (Control child in ControlHelper.EnumChildControls(this.radDock1, true)) { DocumentTabStrip docStrip = child as DocumentTabStrip; if (docStrip != null) { RadPageViewElement pageViewElement = docStrip.TabStripElement; pageViewElement.ItemDragService = new MyDragDropService(pageViewElement); } } }
One possible scenario is adding an application menu button like in RadRibbonBar.
The instance of DockWindow is not disposed when the dock's context menu close option "Close", "Close all but this", "Close All" or when the middle mouse button is used for Close operation.
In design-time the floating functionality from double click must be disabled.
Here is a sample application that has the problem. It appears that the issue is easy to reproduce by changing something via the designer in frmMain (like slightly resizing the large close button larger or smaller. Or adding a label or something else in the same DocumentWindow area around the large Close button). Here is another issue that might be related with the Designer error I'm pointing out. Using my example Test project, If you add another "Tabbed Document" to the RadDock and then launch the application and go back to the designer and select a tab that is not currently selected in the designer. You will see the errors in the attached screen shots. This causes you to have to close out the designer window and reopen to clear the error.
This is a follow on from the forum entry http://www.telerik.com/community/forums/winforms/dock/toolwindow-theme-error.aspx This is not the exact issue I am having but should hopefully lead you in the correct direction. A panels visibility seems to vary depending on where it is. If you run the program and open a new tool window by clicking the + button you will get a new docked window. Change this to a tabbed document. Then add another window and set it to be docked. Then add another window and also set it to be docked. Then set it to autohide. You will see on the tabbed document and the docked unautohide window that there are 2 lines of text. If you now let the auto toolwindow open you will see that there are now three lines of text in this window. The docked autohide is letting the text shine through but only when it is in this state.
I am using nested dock objects. I find that if I close one tabbed window using the X icon, the control closes properly, leaving the other tabbed windows opened. However, if I try to close the tabbed window using the keyboard sequence Ctrl+F4, this also closes one of the tabs within another window! I have attached an example form. This contains a RadDock with 2 windows, DocumentWindow1 and DocumentWindow2. DocumentWindow1 also contains two document windows, DocumentWindow3 and DocumentWindow4. The sequence of events to reproduce this behaviour is as follows: - In designer mode: set focus on DocumentWindow2 and Save - Run app - Form opens with focus set on DocumentWindow2, as expected - Set focus on DocumentWindow1 - Set focus back to DocumentWindow2 - Press Ctrl+F4 to close DocumentWindow2 - This closes DocumentWindow2 but also closes DocumentWindow4 within DocumentWindow1. Please note that if I use the X button to close DocumentWindow2, only DocumentWindow2 gets closed, as expected.
Detected in RadDock using resizing of simple form with RadDock and one ToolWindow docked in bottom.
To reproduce: Add a RadDock with toolwindow, add a webBrowser inside(must be IE10) and try to drag it.
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
To reproduce: -add RadDock with several tabbed documents; -add four ToolWindows to each side: left, top, right, bottom; Use the following code: public Form1() { InitializeComponent(); toolWindow1.DockState = Telerik.WinControls.UI.Docking.DockState.AutoHide; toolWindow2.DockState = Telerik.WinControls.UI.Docking.DockState.AutoHide; toolWindow3.DockState = Telerik.WinControls.UI.Docking.DockState.AutoHide; toolWindow4.DockState = Telerik.WinControls.UI.Docking.DockState.AutoHide; toolWindow1.AutoHide(); toolWindow2.AutoHide(); toolWindow3.AutoHide(); toolWindow4.AutoHide(); } When you run the project, you will notice that all of the ToolWindows are auto hidden and positioned to the left side which is wrong. Some other wrong behavior is when you try to dock again some of the ToolWindows after that, all of them are docked back to their initial positions. Workaround: instead of using AutoHide() method, use the following code: Type type = this.radDock1.GetType(); MethodInfo methodInfo = type.GetMethod("CloseAutoHidePopup", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(this.radDock1, null);
To reproduce: - add RadDock without document windows and five RadButtons with the following Click event handlers: private void radButton1_Click(object sender, EventArgs e) { this.radDock1.LoadFromXml(@"..\\..\\..\\layout1.xml"); } private void radButton2_Click(object sender, EventArgs e) { this.radDock1.LoadFromXml(@"..\\..\\..\\layout2.xml"); } //"Add" button private void radButton3_Click(object sender, EventArgs e) { this.documentContainer1.DockManager.AddDocument(new DocumentWindow(DateTime.Now.TimeOfDay.ToString())); } //Save layout 1 private void radButton4_Click(object sender, EventArgs e) { //add four document windows and save the layout 1 this.radDock1.SaveToXml(@"..\\..\\..\\layout1.xml"); } //Save layout 2 private void radButton5_Click(object sender, EventArgs e) { //add three document windows and save the layout 2 this.radDock1.SaveToXml(@"..\\..\\..\\layout2.xml"); } First add four document windows (via "Add" button click) and save layout 1 (via "Save layout 1" button click) on the RadDock and it creates 4 new Documents and save them in the xml. Restart the application and add three document windows (via "Add" button click) and save layout 2 (via "Save layout 2" button click). Load layout 1 (four document windows), then load layout 2. Everything is OK. But now load again layout 1. As a result ObjectDisposedException is thrown. Workaround: before loading the xml, remove all document windows: radDock1.RemoveAllDocumentWindows(); radDock1.LoadFromXml(@"..\\..\\..\\layout1.xml");
To reproduce: - create a VB project - open the advanced layout designer and add few windows in it - save it and the windows will not show on the form
To reproduce, just load an invalid XML file: if (File.Exists("userDockState.xml")) { try { radDock1.LoadFromXml("userDockState.xml"); } catch (XmlException) { radDock1.LoadFromXml("defaultDockState.xml"); } } Workaround: if (File.Exists("userDockState.xml")) { try { radDock1.LoadFromXml("userDockState.xml"); } catch (XmlException) { radDock1.EndTransactionBlock(); radDock1.LoadFromXml("defaultDockState.xml"); } }
To reproduce: -add a RadDock with one ToolWindow; -add two RadButtons; Use the following code: const string Filename = "dock.xml"; public Form1() { InitializeComponent(); var positions = (DockPosition[])Enum.GetValues(typeof(DockPosition)); for (int i = 0; i < positions.Length; ++i) { RadButton btn = new RadButton(); btn.Text = "Steps" + (i + 1); var position = positions[i]; if (position == DockPosition.Fill) { radDock1.DockControl(btn, toolWindow1, position); } else { radDock1.DockControl(btn, position); } } } private void radButton1_Click(object sender, EventArgs e) { using (var stream = File.Create(Filename)) { radDock1.SaveToXml(stream); } } private void radButton2_Click(object sender, EventArgs e) { if (File.Exists(Filename)) { using (var stream = File.OpenRead(Filename)) { radDock1.LoadFromXml(stream); } } } Steps to reproduce: 1.Float the Steps1 window 2.Hide the Steps1 floating window 3.File --> Save Layout 4.File --> Load Layout 5.Note that the Steps1 window is docked where it was before it was floated 6.Click the Steps1 toggle button in the RadCommandBar 7.Note that the Steps1 window is floating in the correct position Workaround: private void radMenuItem3_Click(object sender, EventArgs e) { if (File.Exists(Filename)) { using (var stream = File.OpenRead(Filename)) { radDock1.LoadFromXml(stream); foreach (DockWindow window in this.radDock1.DockWindows.ToolWindows) { if (window.DockState == DockState.Hidden) { window.DockState = DockState.Docked; window.DockState = DockState.Hidden; } } } } }
To reproduce: add two ToolWindows and several DocumenWindows. Use the following code snippet: public Form1() { InitializeComponent(); this.toolWindow1.AutoHide(); this.toolWindow2.AutoHide(); while (this.documentTabStrip1.TabPanels.Count > 0) { documentTabStrip1.TabPanels.Remove(documentTabStrip1.TabPanels[0]); } TabPanel tabPanel = new TabPanel(); tabPanel.Text = @"New Tab"; documentTabStrip1.TabPanels.Add(tabPanel); } Run the application and hover one of the Autohidden ToolWindows. Workaround: do not add TabPanel. Use the desired DocumentWindow or ToolWindow instead
To reproduce: 1.Add a RadDock with two ToolWindows, docked in a shared TabStrip. 2.Change the dock state of the first ToolWindow to "Floating". 3.Change the dock state of the second ToolWindow to "Autohide". 4.Save the layout. 5.Change the layout. 6.Load the layout. As a result both of the ToolWindow are autohidden.
To reproduce: Add a RadDock and two ToolWindows. Drag the tool windows out and leave on on top of the RadDock, drag the other over the first tool window and you will notice drag hints from both - the RadDock and the ToolWindow