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]

Reply via email to