Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
7e6b6282
Kaydet (Commit)
7e6b6282
authored
May 17, 2017
tarafından
Maxim Monastirsky
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Use WeakComponentImplHelper for MenuBarManager
Change-Id: Ia0c47186f5f266d512c02e92d7983872e207f878
üst
29dd77c7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
78 deletions
+41
-78
menubarmanager.hxx
framework/inc/uielement/menubarmanager.hxx
+5
-13
menubarmanager.cxx
framework/source/uielement/menubarmanager.cxx
+36
-65
No files found.
framework/inc/uielement/menubarmanager.hxx
Dosyayı görüntüle @
7e6b6282
...
...
@@ -51,9 +51,8 @@
#include <vcl/accel.hxx>
#include <vcl/timer.hxx>
#include <toolkit/awt/vclxmenu.hxx>
#include <cppuhelper/implbase.hxx>
#include <cppuhelper/weakref.hxx>
#include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/basemutex.hxx>
#include <cppuhelper/compbase.hxx>
#include <framework/addonsoptions.hxx>
namespace
framework
...
...
@@ -67,11 +66,11 @@ struct PopupControllerEntry
typedef
std
::
unordered_map
<
OUString
,
PopupControllerEntry
,
OUStringHash
>
PopupControllerCache
;
class
MenuBarManager
:
public
cppu
::
WeakImplHelper
<
protected
cppu
::
BaseMutex
,
public
cppu
::
WeakComponentImplHelper
<
css
::
frame
::
XStatusListener
,
css
::
frame
::
XFrameActionListener
,
css
::
ui
::
XUIConfigurationListener
,
css
::
lang
::
XComponent
,
css
::
awt
::
XSystemDependentMenuPeer
>
{
protected
:
...
...
@@ -95,11 +94,6 @@ class MenuBarManager:
virtual
~
MenuBarManager
()
override
;
// XComponent
virtual
void
SAL_CALL
dispose
()
override
;
virtual
void
SAL_CALL
addEventListener
(
const
css
::
uno
::
Reference
<
css
::
lang
::
XEventListener
>&
xListener
)
override
;
virtual
void
SAL_CALL
removeEventListener
(
const
css
::
uno
::
Reference
<
css
::
lang
::
XEventListener
>&
aListener
)
override
;
// XStatusListener
virtual
void
SAL_CALL
statusChanged
(
const
css
::
frame
::
FeatureStateEvent
&
Event
)
override
;
...
...
@@ -145,6 +139,7 @@ class MenuBarManager:
DECL_LINK
(
Deactivate
,
Menu
*
,
bool
);
DECL_LINK
(
AsyncSettingsHdl
,
Timer
*
,
void
);
void
SAL_CALL
disposing
()
override
;
void
RemoveListener
();
void
RequestImages
();
void
RetrieveImageManagers
();
...
...
@@ -191,7 +186,6 @@ class MenuBarManager:
void
Init
(
const
css
::
uno
::
Reference
<
css
::
frame
::
XFrame
>&
rFrame
,
Menu
*
pAddonMenu
,
bool
_bHandlePopUp
);
void
SetHdl
();
bool
m_bDisposed
;
bool
m_bDeleteMenu
;
bool
m_bActive
;
bool
m_bIsBookmarkMenu
;
...
...
@@ -207,8 +201,6 @@ class MenuBarManager:
css
::
uno
::
Reference
<
css
::
container
::
XNameAccess
>
m_xUICommandLabels
;
css
::
uno
::
Reference
<
css
::
frame
::
XUIControllerFactory
>
m_xPopupMenuControllerFactory
;
::
std
::
vector
<
MenuItemHandler
*
>
m_aMenuItemHandlerVector
;
osl
::
Mutex
m_mutex
;
::
cppu
::
OMultiTypeInterfaceContainerHelper
m_aListenerContainer
;
/// container for ALL Listener
css
::
uno
::
Reference
<
css
::
frame
::
XDispatchProvider
>
m_xDispatchProvider
;
css
::
uno
::
Reference
<
css
::
ui
::
XImageManager
>
m_xDocImageManager
;
css
::
uno
::
Reference
<
css
::
ui
::
XImageManager
>
m_xModuleImageManager
;
...
...
framework/source/uielement/menubarmanager.cxx
Dosyayı görüntüle @
7e6b6282
...
...
@@ -71,10 +71,7 @@
#include <vcl/menu.hxx>
#include <vcl/settings.hxx>
#include <vcl/commandinfoprovider.hxx>
#include <osl/mutex.hxx>
#include <osl/file.hxx>
#include <cppuhelper/implbase.hxx>
#include <cppuhelper/queryinterface.hxx>
#include <svtools/acceleratorexecute.hxx>
#include <svtools/miscopt.hxx>
#include <uielement/menubarmerger.hxx>
...
...
@@ -127,12 +124,11 @@ MenuBarManager::MenuBarManager(
const
Reference
<
XDispatchProvider
>&
rDispatchProvider
,
const
OUString
&
rModuleIdentifier
,
Menu
*
pMenu
,
bool
bDelete
,
bool
bHasMenuBar
)
:
m_bDisposed
(
false
)
WeakComponentImplHelper
(
m_aMutex
)
,
m_bRetrieveImages
(
false
)
,
m_bAcceleratorCfg
(
false
)
,
m_bModuleIdentified
(
false
)
,
m_bHasMenuBar
(
bHasMenuBar
)
,
m_aListenerContainer
(
m_mutex
)
,
m_xContext
(
rxContext
)
,
m_xURLTransformer
(
_xURLTransformer
)
,
m_sIconTheme
(
SvtMiscOptions
().
GetIconTheme
()
)
...
...
@@ -148,12 +144,11 @@ MenuBarManager::MenuBarManager(
const
Reference
<
XURLTransformer
>&
_xURLTransformer
,
Menu
*
pAddonMenu
,
bool
popup
)
:
m_bDisposed
(
false
)
WeakComponentImplHelper
(
m_aMutex
)
,
m_bRetrieveImages
(
true
)
,
m_bAcceleratorCfg
(
false
)
,
m_bModuleIdentified
(
false
)
,
m_bHasMenuBar
(
true
)
,
m_aListenerContainer
(
m_mutex
)
,
m_xContext
(
rxContext
)
,
m_xURLTransformer
(
_xURLTransformer
)
,
m_sIconTheme
(
SvtMiscOptions
().
GetIconTheme
()
)
...
...
@@ -166,7 +161,7 @@ Any SAL_CALL MenuBarManager::getMenuHandle( const Sequence< sal_Int8 >& /*Proces
{
SolarMutexGuard
aSolarGuard
;
if
(
m_bDisposed
)
if
(
rBHelper
.
bDisposed
||
rBHelper
.
bInDispose
)
throw
css
::
lang
::
DisposedException
();
Any
a
;
...
...
@@ -203,7 +198,7 @@ void MenuBarManager::Destroy()
{
SolarMutexGuard
aGuard
;
if
(
!
m_
bDisposed
)
if
(
!
rBHelper
.
bDisposed
)
{
// stop asynchronous settings timer and
// release defered item container reference
...
...
@@ -230,69 +225,45 @@ void MenuBarManager::Destroy()
}
// XComponent
void
SAL_CALL
MenuBarManager
::
dispos
e
()
void
SAL_CALL
MenuBarManager
::
dispos
ing
()
{
Reference
<
XComponent
>
xThis
(
static_cast
<
OWeakObject
*
>
(
this
),
UNO_QUERY
);
EventObject
aEvent
(
xThis
)
;
m_aListenerContainer
.
disposeAndClear
(
aEvent
);
SolarMutexGuard
g
;
Destroy
(
);
if
(
m_xDocImageManager
.
is
()
)
{
SolarMutexGuard
g
;
Destroy
();
m_bDisposed
=
true
;
if
(
m_xDocImageManager
.
is
()
)
try
{
try
{
m_xDocImageManager
->
removeConfigurationListener
(
Reference
<
XUIConfigurationListener
>
(
static_cast
<
OWeakObject
*
>
(
this
),
UNO_QUERY
));
}
catch
(
const
Exception
&
)
{
}
m_xDocImageManager
->
removeConfigurationListener
(
Reference
<
XUIConfigurationListener
>
(
static_cast
<
OWeakObject
*
>
(
this
),
UNO_QUERY
));
}
if
(
m_xModuleImageManager
.
is
()
)
catch
(
const
Exception
&
)
{
try
{
m_xModuleImageManager
->
removeConfigurationListener
(
Reference
<
XUIConfigurationListener
>
(
static_cast
<
OWeakObject
*
>
(
this
),
UNO_QUERY
));
}
catch
(
const
Exception
&
)
{
}
}
m_xDocImageManager
.
clear
();
m_xModuleImageManager
.
clear
();
m_xGlobalAcceleratorManager
.
clear
();
m_xModuleAcceleratorManager
.
clear
();
m_xDocAcceleratorManager
.
clear
();
m_xUICommandLabels
.
clear
();
m_xPopupMenuControllerFactory
.
clear
();
m_xContext
.
clear
();
}
}
void
SAL_CALL
MenuBarManager
::
addEventListener
(
const
Reference
<
XEventListener
>&
xListener
)
{
SolarMutexGuard
g
;
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
if
(
m_bDisposed
)
throw
DisposedException
();
m_aListenerContainer
.
addInterface
(
cppu
::
UnoType
<
XEventListener
>::
get
(),
xListener
);
}
void
SAL_CALL
MenuBarManager
::
removeEventListener
(
const
Reference
<
XEventListener
>&
xListener
)
{
SolarMutexGuard
g
;
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
m_aListenerContainer
.
removeInterface
(
cppu
::
UnoType
<
XEventListener
>::
get
(),
xListener
);
if
(
m_xModuleImageManager
.
is
()
)
{
try
{
m_xModuleImageManager
->
removeConfigurationListener
(
Reference
<
XUIConfigurationListener
>
(
static_cast
<
OWeakObject
*
>
(
this
),
UNO_QUERY
));
}
catch
(
const
Exception
&
)
{
}
}
m_xDocImageManager
.
clear
();
m_xModuleImageManager
.
clear
();
m_xGlobalAcceleratorManager
.
clear
();
m_xModuleAcceleratorManager
.
clear
();
m_xDocAcceleratorManager
.
clear
();
m_xUICommandLabels
.
clear
();
m_xPopupMenuControllerFactory
.
clear
();
m_xContext
.
clear
();
}
void
SAL_CALL
MenuBarManager
::
elementInserted
(
const
css
::
ui
::
ConfigurationEvent
&
Event
)
...
...
@@ -300,7 +271,7 @@ void SAL_CALL MenuBarManager::elementInserted( const css::ui::ConfigurationEvent
SolarMutexGuard
g
;
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
if
(
m_bDisposed
)
if
(
rBHelper
.
bDisposed
||
rBHelper
.
bInDispose
)
return
;
sal_Int16
nImageType
=
sal_Int16
();
...
...
@@ -325,7 +296,7 @@ void SAL_CALL MenuBarManager::frameAction( const FrameActionEvent& Action )
{
SolarMutexGuard
g
;
if
(
m_bDisposed
)
if
(
rBHelper
.
bDisposed
||
rBHelper
.
bInDispose
)
throw
css
::
lang
::
DisposedException
();
if
(
Action
.
Action
==
FrameAction_CONTEXT_CHANGED
)
...
...
@@ -356,7 +327,7 @@ void SAL_CALL MenuBarManager::statusChanged( const FeatureStateEvent& Event )
SolarMutexGuard
aSolarGuard
;
{
if
(
m_bDisposed
)
if
(
rBHelper
.
bDisposed
||
rBHelper
.
bInDispose
)
return
;
// We have to check all menu entries as there can be identical entries in a popup menu.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment