include/vcl/outdev.hxx | 2 +- include/vcl/print.hxx | 2 ++ include/vcl/window.hxx | 4 ++++ vcl/source/gdi/outdev.cxx | 4 ---- vcl/source/gdi/print.cxx | 6 ++++++ vcl/source/window/dockmgr.cxx | 3 +-- vcl/source/window/floatwin.cxx | 4 ++-- vcl/source/window/status.cxx | 3 +-- vcl/source/window/window.cxx | 6 ++++++ 9 files changed, 23 insertions(+), 11 deletions(-)
New commits: commit 19c5867f922e9acf0564b6213fa15cc899a77c16 Author: Chris Sherlock <[email protected]> Date: Fri Feb 7 22:32:58 2014 +1100 fdo#74424 HasMirroredGraphics changes HasMirroredGraphics should be called upon by the object using the OutputDevice. As I'm focussing on Window, which will be shortly decoupled from OutputDevice, I have changed HasMirroredGraphics into a virtual function, and introduced a wrapper function of the same name into Window that calls upon Window's OutputDevice object. Due to a bug that never appears to have been fully fixed, mirroring in printing was broken and a workaround ("hotfix" in the code!) was implemented but never fully fixed. Therefore, I have overridden HasMirroredGraphics in Printer and just return false. Change-Id: I9029e2c50cdb339c1e936bed6b92e8b2aac1dcf9 Reviewed-on: https://gerrit.libreoffice.org/7912 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 7458475..546331b 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -755,7 +755,7 @@ public: */ ///@{ SAL_DLLPRIVATE sal_Bool ImplIsRecordLayout() const; - SAL_DLLPRIVATE bool HasMirroredGraphics() const; + virtual bool HasMirroredGraphics() const; SAL_DLLPRIVATE void ReMirror( Point &rPoint ) const; SAL_DLLPRIVATE void ReMirror( Rectangle &rRect ) const; SAL_DLLPRIVATE void ReMirror( Region &rRegion ) const; diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx index 93595fc..672b1fd 100644 --- a/include/vcl/print.hxx +++ b/include/vcl/print.hxx @@ -373,6 +373,8 @@ public: const JobSetup& i_rInitSetup ); + virtual bool HasMirroredGraphics() const; + // implementation detail of PrintJob being asynchronous // not exported, not usable outside vcl static void SAL_DLLPRIVATE ImplPrintJob( const boost::shared_ptr<vcl::PrinterController>& i_pController, diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index bf6bf24..51cd179 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -575,6 +575,10 @@ protected: virtual Window* getAccessibleRelationLabelFor() const; virtual sal_uInt16 getDefaultAccessibleRole() const; virtual OUString getDefaultAccessibleName() const; + +public: + bool HasMirroredGraphics() const; + public: // Single argument ctors shall be explicit. explicit Window( Window* pParent, WinBits nStyle = 0 ); diff --git a/vcl/source/gdi/outdev.cxx b/vcl/source/gdi/outdev.cxx index 485ebb2..b2c73b0 100644 --- a/vcl/source/gdi/outdev.cxx +++ b/vcl/source/gdi/outdev.cxx @@ -483,10 +483,6 @@ void OutputDevice::EnableRTL( sal_Bool bEnable ) bool OutputDevice::HasMirroredGraphics() const { - // HOTFIX for #i55719# - if( meOutDevType == OUTDEV_PRINTER ) - return false; - return ( ImplGetGraphics() && (mpGraphics->GetLayout() & SAL_LAYOUT_BIDI_RTL) ); } diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx index a77bdce..f064c2e 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -213,6 +213,12 @@ void Printer::SetPrinterOptions( const PrinterOptions& i_rOptions ) *mpPrinterOptions = i_rOptions; } +bool Printer::HasMirroredGraphics() const +{ + // due to a "hotfix" for AOO bug i55719, this needs to return false + return false; +} + // QueueInfo QueueInfo::QueueInfo() { diff --git a/vcl/source/window/dockmgr.cxx b/vcl/source/window/dockmgr.cxx index f33886f..495d807 100644 --- a/vcl/source/window/dockmgr.cxx +++ b/vcl/source/window/dockmgr.cxx @@ -802,8 +802,7 @@ void ImplPopupFloatWin::MouseButtonDown( const MouseEvent& rMEvt ) { // get mouse pos at a static window to have a fixed reference point PointerState aState = GetParent()->GetPointerState(); - const OutputDevice *pOutDev = GetOutDev(); - if (pOutDev->HasMirroredGraphics() && IsRTLEnabled()) + if (HasMirroredGraphics() && IsRTLEnabled()) ImplMirrorFramePos(aState.maPos); maTearOffPosition = GetWindow( WINDOW_BORDER )->GetPosPixel(); maDelta = aState.maPos - maTearOffPosition; diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx index e836e62..e459fad 100644 --- a/vcl/source/window/floatwin.cxx +++ b/vcl/source/window/floatwin.cxx @@ -457,7 +457,7 @@ FloatingWindow* FloatingWindow::ImplFloatHitTest( Window* pReference, const Poin const OutputDevice *pWindowOutDev = pReference->GetOutDev(); // compare coordinates in absolute screen coordinates - if( pWindowOutDev->HasMirroredGraphics() ) + if( pReference->HasMirroredGraphics() ) { if(!pReference->IsRTLEnabled() ) // --- RTL --- re-mirror back to get device coordiantes @@ -690,7 +690,7 @@ void FloatingWindow::StartPopupMode( const Rectangle& rRect, sal_uLong nFlags ) // compare coordinates in absolute screen coordinates // Keep in sync with FloatingWindow::ImplFloatHitTest, e.g. fdo#33509 - if( pParentWinOutDev->HasMirroredGraphics() ) + if( pReference->HasMirroredGraphics() ) { if(!pReference->IsRTLEnabled() ) // --- RTL --- re-mirror back to get device coordiantes diff --git a/vcl/source/window/status.cxx b/vcl/source/window/status.cxx index f2a9272..d31c644 100644 --- a/vcl/source/window/status.cxx +++ b/vcl/source/window/status.cxx @@ -283,8 +283,7 @@ void StatusBar::ImplFormat() } nX = STATUSBAR_OFFSET_X; - const OutputDevice *pOutDev = GetOutDev(); - if( pOutDev->HasMirroredGraphics() && IsRTLEnabled() ) + if( HasMirroredGraphics() && IsRTLEnabled() ) nX += ImplGetSVData()->maNWFData.mnStatusBarLowerRightOffset; } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index e256938..661362a 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -353,6 +353,12 @@ const char* ImplDbgCheckWindow( const void* pObj ) // ======================================================================= +bool Window::HasMirroredGraphics() const +{ + const OutputDevice* pOutDev = GetOutDev(); + return pOutDev->OutputDevice::HasMirroredGraphics(); +} + void Window::ImplInitAppFontData( Window* pWindow ) { ImplSVData* pSVData = ImplGetSVData();
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
