Hi Felix,
We have just discussed the problem with Andreas and Mathias one more
time, and they have suggested a better solution.
The default behavior of the dispatch provider should be implemented in
the way that it sends the two closing requests ( ".uno::CloseDoc" and
".uno::CloseWin" ) to the parent frame always. As result the default
behavior will let the topmost parent frame be closed when the child
frame gets these dispatch requests. ".uno::CloseFrame" request should
close only the child frame as before.
The sourcecode should be changed in
framework/source/dispatch/dispatchprovider.cxx in
DispatchProvider::implts_queryFrameDispatch() method. There is already a
special handling for the mentioned dispatch requests there. So for
".uno::CloseDoc" and ".uno::CloseWin" requests and additional check
should be done there.
The new implementation should check whether frame is not a top one, is
not based on system window and has a parent. In this case the parent
frame should to be queried for the correct dispatcher.
The current implementation in
framework/source/dispatch/closedispatcher.cxx in method
static_impl_searchRightTargetFrame() does just the same check while
looking for the topmost frame. As I have already mentioned, in the new
implementation the next frame in the hierarchy should be taken, not the
topmost one.
The questions are as always welcome.
Best regards,
Mikhail.
On 11/20/08 16:08, Mikhail Voitenko wrote:
Hi Felix,
Sorry, that was my failure, it looks like I still had focus in the
database report document itself. I can reproduce the problem now. :)
The problem seems to be that the frame of the source browser has no
dispatch interceptor. Thus the default close mechanics of the child
frame is activated. Unfortunately the default mechanics has already a
hack required by the database component inside some times ago.
The planned solution currently is to create a general dispatch
interceptor helper designed for similar scenarios. This interceptor
should intercept the close event and send them to the parent frame
dispatcher. An example of the dispatch interceptor can be found in
embeddedobj/source/general/intercept.cxx. It even intercepts already the
three closing event. Based on this interceptor the helper interceptor
should be implemented.
comphelper project is probably a good place to implement the helper. So
you can probably start to investigate the example and write the
implementation. The questions are as always welcome.
After the mentioned solution is integrated the mentioned hack seems not
to be necessary any more, and can be removed probably.
Best regards,
Mikhail.
On 11/19/08 19:58, Mikhail Voitenko wrote:
Hi Felix,
during investigation of the source browser frame behavior, I have
recognized that I just can not reproduce the scenario from the issue
i93473 neither in OOO300_m11 nor in DEV300_m35. In which version could
you reproduce the issue?
Thanks,
Mikhail.
PS: Please do not forget to attach the patch for the issue i78753.
---------------------------------------------------------------------
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]