To comment on the following update, log in, then open the issue: http://www.openoffice.org/issues/show_bug.cgi?id=88878
------- Additional comments from [EMAIL PROTECTED] Thu May 8 11:09:00 +0000 2008 ------- jianhuajiao, after applying your patch, form controls are *always* visible in design mode. This implies several problems, amongst others, it implies that the user cannot open a context menu on a form control in design mode. This is because your current patch always keeps the control's visibility in sync with the model property. As outline above, this should not be the case - even if the model's "Visible" is true, then there are situations where the control *must* be invisible, due to side conditions. This side conditions include the following (and maybe more): - the control is in design mode - the control is in a hidden section in the text document - the control is on a layer which is not visible So, I suggest you (1) completely remove the WindowStateGuard changes in forms, which currently ensure that a form control's visibility is always in sync with the model property (2) rename the Visible property to "EnableVisible", to indicate that it does *not* control the visibility, but only the *allowance* to be visible (3) introduce code in toolkit which ensures that the control's visibility is switched *only* if the EnableVisible property changes from TRUE to FALSE, but *not* if it changes from FALSE to TRUE. However, I think even the last point might not be enough. Consider the following scenario: - a control is currently visible, and its model's EnableVisible property is set to TRUE - the model property is set the FALSE => the control becomes invisible - the model property is set to TRUE => the control stays invisible This result is certainly not desired. So, in real, a control would need to *distinguish* between two cases: - it became invisible because of a model property change - it became invisible because some other instance called setVisible( false ) Consequently, we need a place where we distinguish between those two cases. One possible solution would be that an VCLXWindow tracks the EnableVisible property itself. That is, the model property EnableVisible is reflected in a boolean member of VCLXWindowImpl, say mbEnableVisible. Those two are always in sync. Also, another member is introduced, let's call it mbDirectVisible. This member is modified in VCLXWindow::setVisible. Then, whenever mbEnableVisible or mbDirectVisible change, the VCL window is set to visible if and only if *both* members are TRUE. (Note: With an approach like this, (3) from above does not need to be done anymore.) This should address all scenarios, in that one could modify either the model's EnableVisible property, or directly call XWindow::setVisible, and always get the result, no matter in which order you do this. --------------------------------------------------------------------- Please do not reply to this automatically generated notification from Issue Tracker. Please log onto the website and enter your comments. http://qa.openoffice.org/issue_handling/project_issues.html#notification --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]