summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2019-07-23 19:38:56 +0200
committerAndras Timar <andras.timar@collabora.com>2019-12-09 16:52:44 +0100
commit53244fa6f15ffaa0baeb7f1fe0a8efe610879877 (patch)
tree6db4ce183b33ce14102a0ffa1ddf5e33f09c1029 /vcl
parent20db668fe98ed2a90387393dd1a965b80d5fdd9f (diff)
lok: Support per-view help data
Used for showing tooltip windows in LO online. Change-Id: I8b6a7272c75025e717923c839fa8fd9f4cab2903 Reviewed-on: https://gerrit.libreoffice.org/84717 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/helpwin.hxx2
-rw-r--r--vcl/inc/svdata.hxx5
-rw-r--r--vcl/source/app/help.cxx88
-rw-r--r--vcl/source/app/svdata.cxx81
-rw-r--r--vcl/source/window/window.cxx2
-rw-r--r--vcl/source/window/winproc.cxx60
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx8
-rw-r--r--vcl/win/window/salframe.cxx2
8 files changed, 169 insertions, 79 deletions
diff --git a/vcl/inc/helpwin.hxx b/vcl/inc/helpwin.hxx
index 765dac0508e5..178a6edb8f63 100644
--- a/vcl/inc/helpwin.hxx
+++ b/vcl/inc/helpwin.hxx
@@ -24,6 +24,7 @@
#include <vcl/timer.hxx>
enum class QuickHelpFlags;
+class ImplSVHelpData;
class HelpTextWindow : public FloatingWindow
{
@@ -75,6 +76,7 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe
const OUString& rHelpText, const OUString& rStatusText,
const Point& rScreenPos, const tools::Rectangle& rHelpArea );
VCL_DLLPUBLIC void ImplDestroyHelpWindow( bool bUpdateHideTime );
+VCL_DLLPUBLIC void ImplDestroyHelpWindow(ImplSVHelpData& rHelpData, bool bUpdateHideTime);
void ImplSetHelpWindowPos( vcl::Window* pHelpWindow, sal_uInt16 nHelpWinStyle, QuickHelpFlags nStyle,
const Point& rPos, const tools::Rectangle& rHelpArea );
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index fb189fea9a80..56912ae5bf5d 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -352,6 +352,7 @@ struct ImplSchedulerContext
struct ImplSVData
{
+ ImplSVData();
~ImplSVData();
SalData* mpSalData = nullptr;
SalInstance* mpDefInst = nullptr; // Default SalInstance
@@ -367,7 +368,7 @@ struct ImplSVData
ImplSVGDIData maGDIData; // indepen data for Output classes
ImplSVWinData maWinData; // indepen data for Windows classes
ImplSVCtrlData maCtrlData; // indepen data for Control classes
- ImplSVHelpData maHelpData; // indepen data for Help classes
+ ImplSVHelpData* mpHelpData; // Data for Help classes
ImplSVNWFData maNWFData;
UnoWrapperBase* mpUnoWrapper = nullptr;
VclPtr<vcl::Window> mpIntroWindow; // the splash screen
@@ -403,6 +404,8 @@ VCL_PLUGIN_PUBLIC OUString VclResId(const char* pId);
DockingManager* ImplGetDockingManager();
BlendFrameCache* ImplGetBlendFrameCache();
+VCL_PLUGIN_PUBLIC ImplSVHelpData& ImplGetSVHelpData();
+
VCL_DLLPUBLIC bool ImplCallPreNotify( NotifyEvent& rEvt );
VCL_PLUGIN_PUBLIC ImplSVData* ImplGetSVData();
diff --git a/vcl/source/app/help.cxx b/vcl/source/app/help.cxx
index ab6767b39adb..7abe54cdfac0 100644
--- a/vcl/source/app/help.cxx
+++ b/vcl/source/app/help.cxx
@@ -80,43 +80,44 @@ OUString Help::GetHelpText( const OUString&, const weld::Widget* )
void Help::EnableContextHelp()
{
- ImplGetSVData()->maHelpData.mbContextHelp = true;
+ ImplGetSVHelpData().mbContextHelp = true;
}
void Help::DisableContextHelp()
{
- ImplGetSVData()->maHelpData.mbContextHelp = false;
+ ImplGetSVHelpData().mbContextHelp = false;
}
bool Help::IsContextHelpEnabled()
{
- return ImplGetSVData()->maHelpData.mbContextHelp;
+ return ImplGetSVHelpData().mbContextHelp;
}
void Help::EnableExtHelp()
{
- ImplGetSVData()->maHelpData.mbExtHelp = true;
+ ImplGetSVHelpData().mbExtHelp = true;
}
void Help::DisableExtHelp()
{
- ImplGetSVData()->maHelpData.mbExtHelp = false;
+ ImplGetSVHelpData().mbExtHelp = false;
}
bool Help::IsExtHelpEnabled()
{
- return ImplGetSVData()->maHelpData.mbExtHelp;
+ return ImplGetSVHelpData().mbExtHelp;
}
bool Help::StartExtHelp()
{
ImplSVData* pSVData = ImplGetSVData();
+ ImplSVHelpData& aHelpData = ImplGetSVHelpData();
- if ( pSVData->maHelpData.mbExtHelp && !pSVData->maHelpData.mbExtHelpMode )
+ if ( aHelpData.mbExtHelp && !aHelpData.mbExtHelpMode )
{
- pSVData->maHelpData.mbExtHelpMode = true;
- pSVData->maHelpData.mbOldBalloonMode = pSVData->maHelpData.mbBalloonHelp;
- pSVData->maHelpData.mbBalloonHelp = true;
+ aHelpData.mbExtHelpMode = true;
+ aHelpData.mbOldBalloonMode = aHelpData.mbBalloonHelp;
+ aHelpData.mbBalloonHelp = true;
if ( pSVData->maWinData.mpAppWin )
pSVData->maWinData.mpAppWin->ImplGenerateMouseMove();
return true;
@@ -128,11 +129,12 @@ bool Help::StartExtHelp()
bool Help::EndExtHelp()
{
ImplSVData* pSVData = ImplGetSVData();
+ ImplSVHelpData& aHelpData = ImplGetSVHelpData();
- if ( pSVData->maHelpData.mbExtHelp && pSVData->maHelpData.mbExtHelpMode )
+ if ( aHelpData.mbExtHelp && aHelpData.mbExtHelpMode )
{
- pSVData->maHelpData.mbExtHelpMode = false;
- pSVData->maHelpData.mbBalloonHelp = pSVData->maHelpData.mbOldBalloonMode;
+ aHelpData.mbExtHelpMode = false;
+ aHelpData.mbBalloonHelp = aHelpData.mbOldBalloonMode;
if ( pSVData->maWinData.mpAppWin )
pSVData->maWinData.mpAppWin->ImplGenerateMouseMove();
return true;
@@ -143,17 +145,17 @@ bool Help::EndExtHelp()
void Help::EnableBalloonHelp()
{
- ImplGetSVData()->maHelpData.mbBalloonHelp = true;
+ ImplGetSVHelpData().mbBalloonHelp = true;
}
void Help::DisableBalloonHelp()
{
- ImplGetSVData()->maHelpData.mbBalloonHelp = false;
+ ImplGetSVHelpData().mbBalloonHelp = false;
}
bool Help::IsBalloonHelpEnabled()
{
- return ImplGetSVData()->maHelpData.mbBalloonHelp;
+ return ImplGetSVHelpData().mbBalloonHelp;
}
void Help::ShowBalloon( vcl::Window* pParent,
@@ -166,17 +168,17 @@ void Help::ShowBalloon( vcl::Window* pParent,
void Help::EnableQuickHelp()
{
- ImplGetSVData()->maHelpData.mbQuickHelp = true;
+ ImplGetSVHelpData().mbQuickHelp = true;
}
void Help::DisableQuickHelp()
{
- ImplGetSVData()->maHelpData.mbQuickHelp = false;
+ ImplGetSVHelpData().mbQuickHelp = false;
}
bool Help::IsQuickHelpEnabled()
{
- return ImplGetSVData()->maHelpData.mbQuickHelp;
+ return ImplGetSVHelpData().mbQuickHelp;
}
void Help::ShowQuickHelp( vcl::Window* pParent,
@@ -193,7 +195,7 @@ void Help::ShowQuickHelp( vcl::Window* pParent,
void Help::HideBalloonAndQuickHelp()
{
- HelpTextWindow const * pHelpWin = ImplGetSVData()->maHelpData.mpHelpWin;
+ HelpTextWindow const * pHelpWin = ImplGetSVHelpData().mpHelpWin;
bool const bIsVisible = ( pHelpWin != nullptr ) && pHelpWin->IsVisible();
ImplDestroyHelpWindow( bIsVisible );
}
@@ -253,7 +255,7 @@ void Help::HidePopover(vcl::Window const * pParent, void* nId)
// trigger update, so that a Paint is instantly triggered since we do not save the background
pFrameWindow->ImplUpdateAll();
pHelpWin.disposeAndClear();
- ImplGetSVData()->maHelpData.mnLastHelpHideTime = tools::Time::GetSystemTicks();
+ ImplGetSVHelpData().mnLastHelpHideTime = tools::Time::GetSystemTicks();
}
HelpTextWindow::HelpTextWindow( vcl::Window* pParent, const OUString& rText, sal_uInt16 nHelpWinStyle, QuickHelpFlags nStyle ) :
@@ -274,9 +276,8 @@ HelpTextWindow::HelpTextWindow( vcl::Window* pParent, const OUString& rText, sal
SetHelpText( rText );
Window::SetHelpText( rText );
- ImplSVData* pSVData = ImplGetSVData();
- if ( pSVData->maHelpData.mbSetKeyboardHelp )
- pSVData->maHelpData.mbKeyboardHelp = true;
+ if ( ImplGetSVHelpData().mbSetKeyboardHelp )
+ ImplGetSVHelpData().mbKeyboardHelp = true;
maShowTimer.SetInvokeHandler( LINK( this, HelpTextWindow, TimerHdl ) );
@@ -322,8 +323,8 @@ void HelpTextWindow::dispose()
maShowTimer.Stop();
maHideTimer.Stop();
- if( this == ImplGetSVData()->maHelpData.mpHelpWin )
- ImplGetSVData()->maHelpData.mpHelpWin = nullptr;
+ if( this == ImplGetSVHelpData().mpHelpWin )
+ ImplGetSVHelpData().mpHelpWin = nullptr;
FloatingWindow::dispose();
}
@@ -428,7 +429,7 @@ void HelpTextWindow::ShowHelp( sal_uInt16 nDelayMode )
if ( nDelayMode != HELPDELAY_NONE )
{
// In case of ExtendedHelp display help sooner
- if ( ImplGetSVData()->maHelpData.mbExtHelpMode )
+ if ( ImplGetSVHelpData().mbExtHelpMode )
nTimeout = 15;
else
{
@@ -453,8 +454,7 @@ IMPL_LINK( HelpTextWindow, TimerHdl, Timer*, pTimer, void)
if ( mnHelpWinStyle == HELPWINSTYLE_QUICK )
{
// start auto-hide-timer for non-ShowTip windows
- ImplSVData* pSVData = ImplGetSVData();
- if ( this == pSVData->maHelpData.mpHelpWin )
+ if ( this == ImplGetSVHelpData().mpHelpWin )
maHideTimer.Start();
}
ImplShow();
@@ -495,12 +495,12 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe
return;
}
- ImplSVData* pSVData = ImplGetSVData();
+ ImplSVHelpData& aHelpData = ImplGetSVHelpData();
- if (rHelpText.isEmpty() && !pSVData->maHelpData.mbRequestingHelp)
+ if (rHelpText.isEmpty() && !aHelpData.mbRequestingHelp)
return;
- VclPtr<HelpTextWindow> pHelpWin = pSVData->maHelpData.mpHelpWin;
+ VclPtr<HelpTextWindow> pHelpWin = aHelpData.mpHelpWin;
sal_uInt16 nDelayMode = HELPDELAY_NORMAL;
if ( pHelpWin )
{
@@ -509,7 +509,7 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe
if ( ( rHelpText.isEmpty()
|| ( pHelpWin->GetWinStyle() != nHelpWinStyle )
)
- && pSVData->maHelpData.mbRequestingHelp
+ && aHelpData.mbRequestingHelp
)
{
// remove help window if no HelpText or
@@ -523,7 +523,7 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe
else
{
bool const bUpdate = (pHelpWin->GetHelpText() != rHelpText) ||
- ((pHelpWin->GetHelpArea() != rHelpArea) && pSVData->maHelpData.mbRequestingHelp);
+ ((pHelpWin->GetHelpArea() != rHelpArea) && aHelpData.mbRequestingHelp);
if (bUpdate)
{
vcl::Window * pWindow = pHelpWin->GetParent()->ImplGetFrameWindow();
@@ -544,13 +544,13 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe
return;
sal_uInt64 nCurTime = tools::Time::GetSystemTicks();
- if ( ( ( nCurTime - pSVData->maHelpData.mnLastHelpHideTime ) < HelpSettings::GetTipDelay() )
+ if ( ( ( nCurTime - aHelpData.mnLastHelpHideTime ) < pParent->GetSettings().GetHelpSettings().GetTipDelay() )
|| ( nStyle & QuickHelpFlags::NoDelay )
)
nDelayMode = HELPDELAY_NONE;
pHelpWin = VclPtr<HelpTextWindow>::Create( pParent, rHelpText, nHelpWinStyle, nStyle );
- pSVData->maHelpData.mpHelpWin = pHelpWin;
+ aHelpData.mpHelpWin = pHelpWin;
pHelpWin->SetStatusText( rStatusText );
pHelpWin->SetHelpArea( rHelpArea );
@@ -559,7 +559,7 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe
pHelpWin->SetOutputSizePixel( aSz );
ImplSetHelpWindowPos( pHelpWin, nHelpWinStyle, nStyle, rScreenPos, rHelpArea );
// if not called from Window::RequestHelp, then without delay...
- if ( !pSVData->maHelpData.mbRequestingHelp )
+ if ( !aHelpData.mbRequestingHelp )
nDelayMode = HELPDELAY_NONE;
pHelpWin->ShowHelp( nDelayMode );
@@ -567,8 +567,12 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe
void ImplDestroyHelpWindow( bool bUpdateHideTime )
{
- ImplSVData* pSVData = ImplGetSVData();
- VclPtr<HelpTextWindow> pHelpWin = pSVData->maHelpData.mpHelpWin;
+ ImplDestroyHelpWindow(ImplGetSVHelpData(), bUpdateHideTime);
+}
+
+void ImplDestroyHelpWindow(ImplSVHelpData& rHelpData, bool bUpdateHideTime)
+{
+ VclPtr<HelpTextWindow> pHelpWin = rHelpData.mpHelpWin;
if ( pHelpWin )
{
vcl::Window * pWindow = pHelpWin->GetParent()->ImplGetFrameWindow();
@@ -576,12 +580,12 @@ void ImplDestroyHelpWindow( bool bUpdateHideTime )
tools::Rectangle aInvRect( pHelpWin->GetWindowExtentsRelative( pWindow ) );
if( pHelpWin->IsVisible() )
pWindow->Invalidate( aInvRect );
- pSVData->maHelpData.mpHelpWin = nullptr;
- pSVData->maHelpData.mbKeyboardHelp = false;
+ rHelpData.mpHelpWin = nullptr;
+ rHelpData.mbKeyboardHelp = false;
pHelpWin->Hide();
pHelpWin.disposeAndClear();
if( bUpdateHideTime )
- pSVData->maHelpData.mnLastHelpHideTime = tools::Time::GetSystemTicks();
+ rHelpData.mnLastHelpHideTime = tools::Time::GetSystemTicks();
}
}
diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx
index 529eb676e3ad..84f268d77015 100644
--- a/vcl/source/app/svdata.cxx
+++ b/vcl/source/app/svdata.cxx
@@ -72,6 +72,10 @@ namespace
{
struct private_aImplSVData :
public rtl::Static<ImplSVData, private_aImplSVData> {};
+ /// Default instance ensures that ImplSVData::mpHelpData is never null.
+ struct private_aImplSVHelpData :
+ public rtl::Static<ImplSVHelpData, private_aImplSVHelpData> {};
+
}
ImplSVData* ImplGetSVData() {
@@ -384,6 +388,83 @@ void LocaleConfigurationListener::ConfigurationChanged( utl::ConfigurationBroadc
}
+ImplSVHelpData* CreateSVHelpData()
+{
+ if (!comphelper::LibreOfficeKit::isActive())
+ return nullptr;
+
+ ImplSVHelpData* pNewData = new ImplSVHelpData();
+
+ // Set options set globally
+ ImplSVHelpData& aStaticHelpData = private_aImplSVHelpData::get();
+ pNewData->mbContextHelp = aStaticHelpData.mbContextHelp;
+ pNewData->mbExtHelp = aStaticHelpData.mbExtHelp;
+ pNewData->mbExtHelpMode = aStaticHelpData.mbExtHelpMode;
+ pNewData->mbOldBalloonMode = aStaticHelpData.mbOldBalloonMode;
+ pNewData->mbBalloonHelp = aStaticHelpData.mbBalloonHelp;
+ pNewData->mbQuickHelp = aStaticHelpData.mbQuickHelp;
+
+ return pNewData;
+}
+
+void DestroySVHelpData(ImplSVHelpData* pSVHelpData)
+{
+ if (!comphelper::LibreOfficeKit::isActive())
+ return;
+
+ // Change the SVData's help date if neccessary
+ if(ImplGetSVData()->mpHelpData == pSVHelpData)
+ {
+ ImplGetSVData()->mpHelpData = &private_aImplSVHelpData::get();
+ }
+
+ if(pSVHelpData)
+ {
+ ImplDestroyHelpWindow(*pSVHelpData, false);
+ delete pSVHelpData;
+ }
+}
+
+void SetSVHelpData(ImplSVHelpData* pSVHelpData)
+{
+ if (!comphelper::LibreOfficeKit::isActive())
+ return;
+
+ ImplSVData* pSVData = ImplGetSVData();
+ if (pSVData->mpHelpData != pSVHelpData)
+ {
+ // If current one is the static, clean it up to avoid having lingering references.
+ if (pSVData->mpHelpData == &private_aImplSVHelpData::get())
+ {
+ pSVData->mpHelpData->mpHelpWin.reset();
+ }
+
+ pSVData->mpHelpData = pSVHelpData;
+ if (pSVData->mpHelpData == nullptr)
+ {
+ pSVData->mpHelpData = &private_aImplSVHelpData::get(); // Never leave it null.
+ }
+ }
+}
+
+ImplSVData::ImplSVData()
+{
+ mpHelpData = &private_aImplSVHelpData::get();
+}
+
+ImplSVHelpData& ImplGetSVHelpData()
+{
+ ImplSVData* pSVData = ImplGetSVData();
+ if(pSVData->mpHelpData)
+ {
+ return *pSVData->mpHelpData;
+ }
+ else
+ {
+ return private_aImplSVHelpData::get();
+ }
+}
+
ImplSVData::~ImplSVData() {}
ImplSVAppData::~ImplSVAppData() {}
ImplSVGDIData::~ImplSVGDIData() {}
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index a6b7bfc026f8..20187261ee22 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -239,7 +239,7 @@ void Window::dispose()
ImplSVData* pSVData = ImplGetSVData();
- if ( pSVData->maHelpData.mpHelpWin && (pSVData->maHelpData.mpHelpWin->GetParent() == this) )
+ if ( ImplGetSVHelpData().mpHelpWin && (ImplGetSVHelpData().mpHelpWin->GetParent() == this) )
ImplDestroyHelpWindow( true );
SAL_WARN_IF( pSVData->maWinData.mpTrackWin.get() == this, "vcl.window",
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index 26b0f5d33531..6b5f48d68444 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -87,7 +87,7 @@ static bool ImplHandleMouseFloatMode( vcl::Window* pChild, const Point& rMousePo
if ( !pFloat || (nHitTest == HITTEST_RECT) )
{
- if ( pSVData->maHelpData.mpHelpWin && !pSVData->maHelpData.mbKeyboardHelp )
+ if ( ImplGetSVHelpData().mpHelpWin && !ImplGetSVHelpData().mbKeyboardHelp )
ImplDestroyHelpWindow( true );
pChild->ImplGetFrame()->SetPointer( PointerStyle::Arrow );
return true;
@@ -170,27 +170,27 @@ static void ImplHandleMouseHelpRequest( vcl::Window* pChild, const Point& rMouse
return;
}
- ImplSVData* pSVData = ImplGetSVData();
- if ( !pSVData->maHelpData.mpHelpWin ||
- !( pSVData->maHelpData.mpHelpWin->IsWindowOrChild( pChild ) ||
- pChild->IsWindowOrChild( pSVData->maHelpData.mpHelpWin ) ) )
+ ImplSVHelpData& aHelpData = ImplGetSVHelpData();
+ if ( !aHelpData.mpHelpWin ||
+ !( aHelpData.mpHelpWin->IsWindowOrChild( pChild ) ||
+ pChild->IsWindowOrChild( aHelpData.mpHelpWin ) ) )
{
HelpEventMode nHelpMode = HelpEventMode::NONE;
- if ( pSVData->maHelpData.mbQuickHelp )
+ if ( aHelpData.mbQuickHelp )
nHelpMode = HelpEventMode::QUICK;
- if ( pSVData->maHelpData.mbBalloonHelp )
+ if ( aHelpData.mbBalloonHelp )
nHelpMode |= HelpEventMode::BALLOON;
if ( bool(nHelpMode) )
{
if ( pChild->IsInputEnabled() && !pChild->IsInModalMode() )
{
HelpEvent aHelpEvent( rMousePos, nHelpMode );
- pSVData->maHelpData.mbRequestingHelp = true;
+ aHelpData.mbRequestingHelp = true;
pChild->RequestHelp( aHelpEvent );
- pSVData->maHelpData.mbRequestingHelp = false;
+ aHelpData.mbRequestingHelp = false;
}
// #104172# do not kill keyboard activated tooltips
- else if ( pSVData->maHelpData.mpHelpWin && !pSVData->maHelpData.mbKeyboardHelp)
+ else if ( aHelpData.mpHelpWin && !aHelpData.mbKeyboardHelp)
{
ImplDestroyHelpWindow( true );
}
@@ -200,8 +200,7 @@ static void ImplHandleMouseHelpRequest( vcl::Window* pChild, const Point& rMouse
static void ImplSetMousePointer( vcl::Window const * pChild )
{
- ImplSVData* pSVData = ImplGetSVData();
- if ( pSVData->maHelpData.mbExtHelpMode )
+ if ( ImplGetSVHelpData().mbExtHelpMode )
pChild->ImplGetFrame()->SetPointer( PointerStyle::Help );
else
pChild->ImplGetFrame()->SetPointer( pChild->ImplGetMousePointer() );
@@ -272,6 +271,7 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>& xWindow, MouseNotifyEvent
long nX, long nY, sal_uInt64 nMsgTime,
sal_uInt16 nCode, MouseEventModifiers nMode )
{
+ ImplSVHelpData& aHelpData = ImplGetSVHelpData();
ImplSVData* pSVData = ImplGetSVData();
Point aMousePos( nX, nY );
VclPtr<vcl::Window> pChild;
@@ -284,11 +284,11 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>& xWindow, MouseNotifyEvent
// mousebuttonup event
if ( (nSVEvent == MouseNotifyEvent::MOUSEBUTTONDOWN) || (nSVEvent == MouseNotifyEvent::MOUSEBUTTONUP) )
{
- if ( (nSVEvent == MouseNotifyEvent::MOUSEBUTTONUP) && pSVData->maHelpData.mbExtHelpMode )
+ if ( (nSVEvent == MouseNotifyEvent::MOUSEBUTTONUP) && aHelpData.mbExtHelpMode )
Help::EndExtHelp();
- if ( pSVData->maHelpData.mpHelpWin )
+ if ( aHelpData.mpHelpWin )
{
- if( xWindow->ImplGetWindow() == pSVData->maHelpData.mpHelpWin )
+ if( xWindow->ImplGetWindow() == aHelpData.mpHelpWin )
{
ImplDestroyHelpWindow( false );
return true; // xWindow is dead now - avoid crash!
@@ -316,7 +316,7 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>& xWindow, MouseNotifyEvent
if ( bMouseLeave )
{
pWinFrameData->mbMouseIn = false;
- if ( pSVData->maHelpData.mpHelpWin && !pSVData->maHelpData.mbKeyboardHelp )
+ if ( ImplGetSVHelpData().mpHelpWin && !ImplGetSVHelpData().mbKeyboardHelp )
{
ImplDestroyHelpWindow( true );
@@ -686,9 +686,9 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>& xWindow, MouseNotifyEvent
{
// if the MouseMove handler changes the help window's visibility
// the HelpRequest handler should not be called anymore
- vcl::Window* pOldHelpTextWin = pSVData->maHelpData.mpHelpWin;
+ vcl::Window* pOldHelpTextWin = ImplGetSVHelpData().mpHelpWin;
pChild->MouseMove( aMEvt );
- if ( pOldHelpTextWin != pSVData->maHelpData.mpHelpWin )
+ if ( pOldHelpTextWin != ImplGetSVHelpData().mpHelpWin )
bCallHelpRequest = false;
}
}
@@ -732,7 +732,7 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>& xWindow, MouseNotifyEvent
if ( nSVEvent == MouseNotifyEvent::MOUSEMOVE )
{
- if ( bCallHelpRequest && !pSVData->maHelpData.mbKeyboardHelp )
+ if ( bCallHelpRequest && !ImplGetSVHelpData().mbKeyboardHelp )
ImplHandleMouseHelpRequest( pChild, pChild->OutputToScreenPixel( aMEvt.GetPosPixel() ) );
bRet = true;
}
@@ -906,13 +906,13 @@ static bool ImplHandleKey( vcl::Window* pWindow, MouseNotifyEvent nSVEvent,
// handle tracking window
if ( nSVEvent == MouseNotifyEvent::KEYINPUT )
{
- if ( pSVData->maHelpData.mbExtHelpMode )
+ if ( ImplGetSVHelpData().mbExtHelpMode )
{
Help::EndExtHelp();
if ( nEvCode == KEY_ESCAPE )
return true;
}
- if ( pSVData->maHelpData.mpHelpWin )
+ if ( ImplGetSVHelpData().mpHelpWin )
ImplDestroyHelpWindow( false );
// AutoScrollMode
@@ -1052,15 +1052,15 @@ static bool ImplHandleKey( vcl::Window* pWindow, MouseNotifyEvent nSVEvent,
HelpEvent aHelpEvent( aPos, HelpEventMode::BALLOON );
aHelpEvent.SetKeyboardActivated( true );
- pSVData->maHelpData.mbSetKeyboardHelp = true;
+ ImplGetSVHelpData().mbSetKeyboardHelp = true;
pChild->RequestHelp( aHelpEvent );
- pSVData->maHelpData.mbSetKeyboardHelp = false;
+ ImplGetSVHelpData().mbSetKeyboardHelp = false;
}
else if ( (nCode == KEY_F1) || (nCode == KEY_HELP) )
{
if ( !aKeyCode.GetModifier() )
{
- if ( pSVData->maHelpData.mbContextHelp )
+ if ( ImplGetSVHelpData().mbContextHelp )
{
Point aMousePos = pChild->OutputToScreenPixel( pChild->GetPointerPosPixel() );
HelpEvent aHelpEvent( aMousePos, HelpEventMode::CONTEXT );
@@ -1071,7 +1071,7 @@ static bool ImplHandleKey( vcl::Window* pWindow, MouseNotifyEvent nSVEvent,
}
else if ( aKeyCode.IsShift() )
{
- if ( pSVData->maHelpData.mbExtHelp )
+ if ( ImplGetSVHelpData().mbExtHelp )
Help::StartExtHelp();
else
bRet = false;
@@ -1350,7 +1350,7 @@ bool HandleGestureEventBase::Setup()
if (m_pSVData->maWinData.mpAutoScrollWin)
m_pSVData->maWinData.mpAutoScrollWin->EndAutoScroll();
- if (m_pSVData->maHelpData.mpHelpWin)
+ if (ImplGetSVHelpData().mpHelpWin)
ImplDestroyHelpWindow( true );
return !m_pWindow->IsDisposed();
}
@@ -1624,7 +1624,7 @@ void ImplHandleResize( vcl::Window* pWindow, long nNewWidth, long nNewHeight )
if (bChanged && pWindow->GetStyle() & (WB_MOVEABLE|WB_SIZEABLE))
{
KillOwnPopups( pWindow );
- if( pWindow->ImplGetWindow() != ImplGetSVData()->maHelpData.mpHelpWin )
+ if( pWindow->ImplGetWindow() != ImplGetSVHelpData().mpHelpWin )
ImplDestroyHelpWindow( true );
}
@@ -1703,7 +1703,7 @@ static void ImplHandleMove( vcl::Window* pWindow )
if( pWindow->GetStyle() & (WB_MOVEABLE|WB_SIZEABLE) )
{
KillOwnPopups( pWindow );
- if( pWindow->ImplGetWindow() != ImplGetSVData()->maHelpData.mpHelpWin )
+ if( pWindow->ImplGetWindow() != ImplGetSVHelpData().mpHelpWin )
ImplDestroyHelpWindow( true );
}
@@ -1926,9 +1926,9 @@ static void ImplHandleClose( vcl::Window* pWindow )
pLastLevelFloat = pSVData->maWinData.mpFirstFloat->ImplFindLastLevelFloat();
pLastLevelFloat->EndPopupMode( FloatWinPopupEndFlags::Cancel | FloatWinPopupEndFlags::CloseAll );
}
- if ( pSVData->maHelpData.mbExtHelpMode )
+ if ( ImplGetSVHelpData().mbExtHelpMode )
Help::EndExtHelp();
- if ( pSVData->maHelpData.mpHelpWin )
+ if ( ImplGetSVHelpData().mpHelpWin )
ImplDestroyHelpWindow( false );
// AutoScrollMode
if ( pSVData->maWinData.mpAutoScrollWin )
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 2a91e0706239..dfb20768282e 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -7590,8 +7590,8 @@ namespace
gboolean signalTooltipQuery(GtkWidget* pWidget, gint /*x*/, gint /*y*/,
gboolean /*keyboard_mode*/, GtkTooltip *tooltip)
{
- const ImplSVData* pSVData = ImplGetSVData();
- if (pSVData->maHelpData.mbBalloonHelp)
+ const ImplSVHelpData& aHelpData = ImplGetSVHelpData();
+ if (aHelpData.mbBalloonHelp)
{
/*Current mechanism which needs help installed*/
OString sHelpId = ::get_help_id(pWidget);
@@ -7709,8 +7709,8 @@ private:
OString sHelpId = m_aUtf8HelpRoot + sBuildableName;
set_help_id(pWidget, sHelpId);
//hook up for extended help
- const ImplSVData* pSVData = ImplGetSVData();
- if (pSVData->maHelpData.mbBalloonHelp && !GTK_IS_DIALOG(pWidget) && !GTK_IS_ASSISTANT(pWidget))
+ const ImplSVHelpData& aHelpData = ImplGetSVHelpData();
+ if (aHelpData.mbBalloonHelp && !GTK_IS_DIALOG(pWidget) && !GTK_IS_ASSISTANT(pWidget))
{
gtk_widget_set_has_tooltip(pWidget, true);
g_signal_connect(pWidget, "query-tooltip", G_CALLBACK(signalTooltipQuery), nullptr);
diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx
index fec1382f9967..f72ea9c66dcb 100644
--- a/vcl/win/window/salframe.cxx
+++ b/vcl/win/window/salframe.cxx
@@ -3064,7 +3064,7 @@ static bool ImplHandleMouseMsg( HWND hWnd, UINT nMsg,
aPt.x = static_cast<short>(LOWORD(lParam));
aPt.y = static_cast<short>(HIWORD(lParam));
ScreenToClient(hWnd, &aPt);
- if (const auto& pHelpWin = ImplGetSVData()->maHelpData.mpHelpWin)
+ if (const auto& pHelpWin = ImplGetSVHelpData().mpHelpWin)
{
const tools::Rectangle& rHelpRect = pHelpWin->GetHelpArea();
if (rHelpRect.IsInside(Point(aPt.x, aPt.y)))