diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2011-02-17 16:53:53 +0100 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2011-02-17 16:53:53 +0100 |
commit | 7b54316a19fab04f52ab5bb55e7f5845eba56530 (patch) | |
tree | 2f3d090c899cb6d2ed42d81b8b7ceea8ec91e3d3 /vcl | |
parent | 8eb916a342a3b1f217a7141aa3c0a7ea1d7bd53f (diff) | |
parent | db8eb68761bee1f15efa5484c24ac8599fb5188b (diff) |
CWS-TOOLING: integrate CWS gridsort
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/vcl/help.hxx | 38 | ||||
-rw-r--r-- | vcl/inc/vcl/helpwin.hxx | 3 | ||||
-rw-r--r-- | vcl/source/app/help.cxx | 47 |
3 files changed, 60 insertions, 28 deletions
diff --git a/vcl/inc/vcl/help.hxx b/vcl/inc/vcl/help.hxx index 752fc6e6e4f9..b80b9a86627a 100644 --- a/vcl/inc/vcl/help.hxx +++ b/vcl/inc/vcl/help.hxx @@ -40,16 +40,22 @@ class Window; // - Help-Types - // -------------- -#define QUICKHELP_LEFT ((sal_uInt16)0x0001) -#define QUICKHELP_CENTER ((sal_uInt16)0x0002) -#define QUICKHELP_RIGHT ((sal_uInt16)0x0004) -#define QUICKHELP_TOP ((sal_uInt16)0x0008) -#define QUICKHELP_VCENTER ((sal_uInt16)0x0010) -#define QUICKHELP_BOTTOM ((sal_uInt16)0x0020) -#define QUICKHELP_NOAUTOPOS (QUICKHELP_LEFT | QUICKHELP_CENTER | QUICKHELP_RIGHT | QUICKHELP_TOP | QUICKHELP_VCENTER | QUICKHELP_BOTTOM) -#define QUICKHELP_CTRLTEXT ((sal_uInt16)0x0040) -#define QUICKHELP_NOEVADEPOINTER ((sal_uInt16)0x4000) -#define QUICKHELP_BIDI_RTL ((sal_uInt16)0x8000) +#define QUICKHELP_LEFT ((sal_uInt16)0x0001) +#define QUICKHELP_CENTER ((sal_uInt16)0x0002) +#define QUICKHELP_RIGHT ((sal_uInt16)0x0004) +#define QUICKHELP_TOP ((sal_uInt16)0x0008) +#define QUICKHELP_VCENTER ((sal_uInt16)0x0010) +#define QUICKHELP_BOTTOM ((sal_uInt16)0x0020) +#define QUICKHELP_NOAUTOPOS (QUICKHELP_LEFT | QUICKHELP_CENTER | QUICKHELP_RIGHT | QUICKHELP_TOP | QUICKHELP_VCENTER | QUICKHELP_BOTTOM) +#define QUICKHELP_CTRLTEXT ((sal_uInt16)0x0040) +/// force the existent tip window to be re-positioned, even if the previous incarnation has the same text. Applies to ShowBallon and ShowQuickHelp. +#define QUICKHELP_FORCE_REPOSITION ((sal_uInt16)0x0080) +/// no delay when opening the quick help. Applies to ShowBallon and ShowQuickHelp +#define QUICKHELP_NO_DELAY ((sal_uInt16)0x0100) +/// force balloon-style in ShowTip +#define QUICKHELP_TIP_STYLE_BALLOON ((sal_uInt16)0x0200) +#define QUICKHELP_NOEVADEPOINTER ((sal_uInt16)0x4000) +#define QUICKHELP_BIDI_RTL ((sal_uInt16)0x8000) // By changes you must also change: rsc/vclrsc.hxx #define OOO_HELP_INDEX ".help:index" @@ -101,21 +107,25 @@ public: static void EnableQuickHelp(); static void DisableQuickHelp(); - static sal_Bool IsQuickHelpEnabled(); - static sal_Bool ShowQuickHelp( Window* pParent, + static sal_Bool IsQuickHelpEnabled(); + static sal_Bool ShowQuickHelp( Window* pParent, const Rectangle& rScreenRect, const XubString& rHelpText, const XubString& rLongHelpText, sal_uInt16 nStyle = 0 ); - static sal_Bool ShowQuickHelp( Window* pParent, + static sal_Bool ShowQuickHelp( Window* pParent, const Rectangle& rScreenRect, const XubString& rHelpText, sal_uInt16 nStyle = 0 ) { return Help::ShowQuickHelp( pParent, rScreenRect, rHelpText, XubString(), nStyle ); } - static sal_uLong ShowTip( Window* pParent, + static sal_uLong ShowTip( Window* pParent, const Rectangle& rScreenRect, const XubString& rText, sal_uInt16 nStyle = 0 ); + static void UpdateTip( sal_uLong nId, + Window* pParent, + const Rectangle& rScreenRect, + const XubString& rText ); static void HideTip( sal_uLong nId ); }; diff --git a/vcl/inc/vcl/helpwin.hxx b/vcl/inc/vcl/helpwin.hxx index a3fd0a81da36..fc3e2d5ffce8 100644 --- a/vcl/inc/vcl/helpwin.hxx +++ b/vcl/inc/vcl/helpwin.hxx @@ -65,7 +65,8 @@ public: const String& GetHelpText() const { return maHelpText; } void SetHelpText( const String& rHelpText ); - sal_uInt16 GetWinStyle() const { return mnHelpWinStyle; } + sal_uInt16 GetWinStyle() const { return mnHelpWinStyle; } + sal_uInt16 GetStyle() const { return mnStyle; } // Nur merken: void SetStatusText( const String& rStatusText ) { maStatusText = rStatusText; } diff --git a/vcl/source/app/help.cxx b/vcl/source/app/help.cxx index 275280eff692..13fb2d3c0893 100644 --- a/vcl/source/app/help.cxx +++ b/vcl/source/app/help.cxx @@ -36,6 +36,7 @@ #include "vcl/help.hxx" #include "vcl/helpwin.hxx" #include "tools/debug.hxx" +#include "tools/diagnose_ex.h" #include "tools/time.hxx" // ======================================================================= @@ -274,18 +275,32 @@ sal_Bool Help::ShowQuickHelp( Window* pParent, // ----------------------------------------------------------------------- -sal_uIntPtr Help::ShowTip( Window* pParent, const Rectangle& rRect, +sal_uIntPtr Help::ShowTip( Window* pParent, const Rectangle& rScreenRect, const XubString& rText, sal_uInt16 nStyle ) { - sal_uInt16 nHelpWinStyle = HELPWINSTYLE_QUICK; + sal_uInt16 nHelpWinStyle = ( ( nStyle & QUICKHELP_TIP_STYLE_BALLOON ) != 0 ) ? HELPWINSTYLE_BALLOON : HELPWINSTYLE_QUICK; HelpTextWindow* pHelpWin = new HelpTextWindow( pParent, rText, nHelpWinStyle, nStyle ); + sal_uIntPtr nId = reinterpret_cast< sal_uIntPtr >( pHelpWin ); + UpdateTip( nId, pParent, rScreenRect, rText ); + + pHelpWin->ShowHelp( HELPDELAY_NONE ); + return nId; +} + +// ----------------------------------------------------------------------- + +void Help::UpdateTip( sal_uIntPtr nId, Window* pParent, const Rectangle& rScreenRect, const XubString& rText ) +{ + HelpTextWindow* pHelpWin = reinterpret_cast< HelpTextWindow* >( nId ); + ENSURE_OR_RETURN_VOID( pHelpWin != NULL, "Help::UpdateTip: invalid ID!" ); + Size aSz = pHelpWin->CalcOutSize(); pHelpWin->SetOutputSizePixel( aSz ); - ImplSetHelpWindowPos( pHelpWin, nHelpWinStyle, nStyle, - pParent->OutputToScreenPixel( pParent->GetPointerPosPixel() ), &rRect ); - pHelpWin->ShowHelp( HELPDELAY_NONE ); - return (sal_uIntPtr)pHelpWin; + ImplSetHelpWindowPos( pHelpWin, pHelpWin->GetWinStyle(), pHelpWin->GetStyle(), + pParent->OutputToScreenPixel( pParent->GetPointerPosPixel() ), &rScreenRect ); + + pHelpWin->SetHelpText( rText ); } // ----------------------------------------------------------------------- @@ -590,10 +605,14 @@ void ImplShowHelpWindow( Window* pParent, sal_uInt16 nHelpWinStyle, sal_uInt16 n { DBG_ASSERT( pHelpWin != pParent, "HelpInHelp ?!" ); - if ( (( pHelpWin->GetHelpText() != rHelpText ) || - ( pHelpWin->GetWinStyle() != nHelpWinStyle ) || - ( pHelpArea && ( pHelpWin->GetHelpArea() != *pHelpArea ) ) ) - && pSVData->maHelpData.mbRequestingHelp ) + if ( ( ( pHelpWin->GetHelpText() != rHelpText ) + || ( pHelpWin->GetWinStyle() != nHelpWinStyle ) + || ( pHelpArea + && ( pHelpWin->GetHelpArea() != *pHelpArea ) + ) + ) + && pSVData->maHelpData.mbRequestingHelp + ) { // remove help window if no HelpText or other HelpText or // other help mode. but keep it if we are scrolling, ie not requesting help @@ -605,8 +624,8 @@ void ImplShowHelpWindow( Window* pParent, sal_uInt16 nHelpWinStyle, sal_uInt16 n } else { - bool bTextChanged = rHelpText != pHelpWin->GetHelpText(); - if( bTextChanged ) + bool const bTextChanged = rHelpText != pHelpWin->GetHelpText(); + if ( bTextChanged || ( ( nStyle & QUICKHELP_FORCE_REPOSITION ) != 0 ) ) { Window * pWindow = pHelpWin->GetParent()->ImplGetFrameWindow(); Rectangle aInvRect( pHelpWin->GetWindowExtentsRelative( pWindow ) ); @@ -625,7 +644,9 @@ void ImplShowHelpWindow( Window* pParent, sal_uInt16 nHelpWinStyle, sal_uInt16 n if ( !pHelpWin && rHelpText.Len() ) { sal_uLong nCurTime = Time::GetSystemTicks(); - if( (nCurTime - pSVData->maHelpData.mnLastHelpHideTime) < pParent->GetSettings().GetHelpSettings().GetTipDelay() ) + if ( ( ( nCurTime - pSVData->maHelpData.mnLastHelpHideTime ) < pParent->GetSettings().GetHelpSettings().GetTipDelay() ) + || ( ( nStyle & QUICKHELP_NO_DELAY ) != 0 ) + ) nDelayMode = HELPDELAY_NONE; DBG_ASSERT( !pHelpWin, "Noch ein HelpWin ?!" ); |