Hi,
i have a problem with a XDispatchProviderInterceptor and menu entries Scenario: If a user changes to a sheet named "Tabelle2" i register a XDispatchProviderInterceptor. Now all GUI elements with URL "macro:///InterceptorDemo" should be disabled. I added entries for "OfficeMenuBar", "OfficeToolBar" and "OfficeHelp" using a Addons.xcu. Everything works fine so far. Changing to the sheet "Tabelle2" disables the elements. Changing to another sheet, enables the elements. But if i remove the "OfficeToolBar" entry from the Addons.xcu, the menu entries will stay *disabled*, even if i change to another sheet ... What i noticed: - registering the interceptor does not call menu URL's they are called only if one opens the menue ... only "OfficeToolBar" are called at this time. - opening a menu will call "com.sun.star.frame.XDispatch.addStatusListener" **and** "com.sun.star.frame.XDispatch.removeStatusListener" ... this does not happen for "OfficeToolBar" elements... public void addStatusListener(XStatusListener xControl, URL aURL) { aListenerHelper.addListener(xFrame, xControl, aURL.Complete); aListenerHelper.notify(xFrame, aURL, false); } public void removeStatusListener(XStatusListener xControl, URL aURL) { // why is removeStatusListener called for menu entries on open ??? if (interceptor.isDispatchRegistered() == true) return; aListenerHelper.notify(xFrame, aURL, true); aListenerHelper.removeListener(xFrame, xControl, aURL.Complete); } any hints are welcome ;-) i can provide a ready to run example ... Oliver -- GnuPG key 0xCFD04A45: 8822 057F 4956 46D3 352C 1A06 4E2C AB40 CFD0 4A45
signature.asc
Description: OpenPGP digital signature