sd/source/ui/func/fupoor.cxx | 6 +-- vcl/headless/svpgdi.cxx | 66 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 67 insertions(+), 5 deletions(-)
New commits: commit 7dcbc5708aec6672ddc3ba6ed000421f56e651ac Author: Caolán McNamara <caol...@redhat.com> Date: Mon Nov 30 10:33:58 2015 +0000 silence mouse release warning Change-Id: Ie3c6da36f1c462080f78e8713e9e5dcd228fbacf diff --git a/sd/source/ui/func/fupoor.cxx b/sd/source/ui/func/fupoor.cxx index fb896ce..34b35ab 100644 --- a/sd/source/ui/func/fupoor.cxx +++ b/sd/source/ui/func/fupoor.cxx @@ -116,15 +116,15 @@ void FuPoor::Deactivate() aDragTimer.Stop(); aScrollTimer.Stop(); aDelayToScrollTimer.Stop (); - bScrollable = - bDelayActive = false; + bScrollable = bDelayActive = false; if (pDialog) { pDialog->Hide(); } - if (mpWindow) mpWindow->ReleaseMouse (); + if (mpWindow && mpWindow->IsMouseCaptured()) + mpWindow->ReleaseMouse(); } void FuPoor::SetWindow(::sd::Window* pWin) commit a80dea3e77c2a8465cdd309c5f740fb8102dd826 Author: Caolán McNamara <caol...@redhat.com> Date: Mon Nov 30 10:22:46 2015 +0000 gtk3: implement SAL_INVERT_50 rectangle case missing stipple effect around slides in layout panel Change-Id: I8a55c6bda1e742e105ba22e4566658099ea16f46 diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx index 6ad1458..2d98b26 100644 --- a/vcl/headless/svpgdi.cxx +++ b/vcl/headless/svpgdi.cxx @@ -1172,9 +1172,69 @@ SalColor SvpSalGraphics::getPixel( long nX, long nY ) return aColor.toInt32(); } -void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInvert /*nFlags*/ ) +namespace { - // FIXME: handle SAL_INVERT_50 and SAL_INVERT_TRACKFRAME + cairo_pattern_t * create_stipple() + { + static unsigned char data[16] = { 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0xFF, 0xFF }; + cairo_surface_t* surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_A8, 4, 4, 4); + cairo_pattern_t* pattern = cairo_pattern_create_for_surface(surface); + cairo_surface_destroy(surface); + cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT); + cairo_pattern_set_filter(pattern, CAIRO_FILTER_NEAREST); + return pattern; + } +} + +void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags ) +{ + // FIXME: handle SAL_INVERT_TRACKFRAME + if ( nFlags & SAL_INVERT_TRACKFRAME ) + { + SAL_WARN("vcl.gdi", "SvpSalGraphics::invert, unhandled SAL_INVERT_TRACKFRAME"); + } + else if ( nFlags & SAL_INVERT_50 ) + { + if (cairo_t* cr = getCairoContext()) + { + assert(m_aDevice->isTopDown()); + + clipRegion(cr); + + cairo_pattern_t *pattern = create_stipple(); + + cairo_rectangle_int_t extents; + basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aDevice->getDamageTracker()); + + cairo_rectangle(cr, nX, nY, nWidth, nHeight); + + if (xDamageTracker) + extents = getFillDamage(cr); + + cairo_clip(cr); + + cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); + cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE); + cairo_mask(cr, pattern); + cairo_pattern_destroy(pattern); + + cairo_surface_flush(cairo_get_target(cr)); + cairo_destroy(cr); // unref + + return; + } + else + SAL_WARN("vcl.gdi", "SvpSalGraphics::invert unhandled XOR (?)"); + } + else + { + SAL_WARN("vcl.gdi", "SvpSalGraphics::invert, unhandled SAL_INVERT_TRACKFRAME"); + } + + basegfx::B2DPolygon aRect = basegfx::tools::createPolygonFromRect( basegfx::B2DRectangle( nX, nY, nX+nWidth, nY+nHeight ) ); basegfx::B2DPolyPolygon aPolyPoly( aRect ); basegfx::B2IBox aDestRange( nX, nY, nX + nWidth, nY + nHeight ); @@ -1187,6 +1247,8 @@ void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInv void SvpSalGraphics::invert( sal_uInt32 nPoints, const SalPoint* pPtAry, SalInvert /*nFlags*/ ) { + SAL_WARN("vcl.gdi", "SvpSalGraphics::invert, unhandled points case"); + // FIXME: handle SAL_INVERT_50 and SAL_INVERT_TRACKFRAME basegfx::B2DPolygon aPoly; aPoly.append( basegfx::B2DPoint( pPtAry->mnX, pPtAry->mnY ), nPoints );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits