-
Notifications
You must be signed in to change notification settings - Fork 882
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The DockingManager in V3.4 does not always cover the assigned content area (eg Window) #1381
Comments
This change temporarily fixes several issues, as described in xceedsoftware#1381 and xceedsoftware#1379. The fix is such that the AvalonDock will no longer crash when the control goes out of bounds. However, this does not prevent the actual control from going out of bounds. Therefore, this fix should only be used as a stop-gap until an actual fix can be implemented.
Did you see the log4net branch that I also maintain(?): We should use it to trap the statement that changes the DockWidth and better understand the root of this issue - what do you think? |
I'm not familiar with Log4Net, but if this is something you feel we should use, then let me know what I can do to help you. The underlying issue is pretty deep and it fundamentally does not work as I believe it should (i.e. not obeying the bounds of the window, allowing panes to be pushed off the window because of the grid splitter, etc). This is also an issue in v3.7 (premium trial) version. |
The log4net logging facility is quit simple - here is a short description to get you started:
You need the static Logger in line 44 to get a facility to spin up for that class:
From there, there are multple API logging methods you could choose. I usually use: You can also use:
To log exception as such in the log file - they are highlighted red in the viewer and doing so can be better in terms of performance since you are not required to log the Info log levels as well - but try the info level and stick with it if it is fast enough for you as I already added a few logging statements in the branch... We can also work the other way around, if thats too much work, I just need to understand the problemin more detail... I understand the The class derives through the abstract class LayoutGridControl But the So, I would start using an Then, testing and using the logger output should give you more insides as to what action is causing what change and which one is not the one you want. Have a try with this and let me know if you get stuck and whether my understanding of the problem is correct. I might take a look at this with the logger if that helps you understanding the problem behavior more accurately... |
I would ignore almost all of the changes I've added in as pull requests, and they are simply stop-gaps to show other developers who are using the 3.4 what to modify in order to not cause AvalonDock to crash. My fixes aren't technically taking care of the root cause, which I believe is something should aim to do. From what I've seen, there are several issues here, which all really boils down to one thing: When using the GridSplitter, in certain cases, it allows the user to drag content past the application/container window bounds. I haven't really dug in to the code apart from the small parts where I could easily fix specific crashes that I am experiencing (as I mentioned, stop-gaps). What I am getting at here is that if, fundamentally, the GridSplitter didn't allow content to be moved out of the main application window or container window, then we probably won't need to have the other changes that I implemented in the interim, such as the pull request #1393. I'll take a look at it over the next week or so, using the information you gave me with log4net to log specifics so I can get a grasp on the actual code and where things are changing when they shouldn't. |
Hi, Thank you. |
I'll try and create a sample to reproduce the issue in a .NET WPF application based on the current release of AvalonDock v3.4, but it might be a few days to a week before I can get it uploaded, However, I don't believe that this is due to the fact that they are in AutoHide Panels, because an application I am developing doesn't use auto-hide content. Basically, any control that uses the LayoutPositionableGroup as its model (from what I've tested) has the potential to be affected by this bug. The controls that I can tell that use this base control is: LayoutPanel, LayoutDocumentPaneGroup, LayoutDocumentPane, LayoutAnchorablePaneGroup, LayoutAnchorablePane, and LayoutGridControl. There are several places where it can be dragged past. A few cases from my testing:
Many controls do not obey their MinWidth properties, especially in the cases described in this issue. |
Hi, Upon running, you can drag the splitter to extend the LayoutDocumentPaneGroup to he right, but it will stop when the LayoutAnchorablePaneGroup reaches its DockMinWidth of 75. `` |
Run the project TestMVVMApp in the zipped solution and repeat the steps in the zipped video (IssueWithDock.zip) |
Hi, Thank you for the sample and video., |
It is possible to move GridSplitter out of the MainWindow and then resize the Window such that the DockingManger does no longer cover the complete assigned content (window).
The text was updated successfully, but these errors were encountered: