[Libreoffice-commits] .: vcl/aqua vcl/inc vcl/ios
vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx |6 - vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx| 55 -- vcl/aqua/source/gdi/coretext/salcoretextstyle.cxx | 16 ++--- vcl/aqua/source/gdi/coretext/salgdi.cxx | 30 - vcl/inc/aqua/common.h |6 - vcl/inc/ios/common.h |6 - vcl/ios/source/gdi/salcoretextfontutils.cxx |6 - vcl/ios/source/gdi/salcoretextlayout.cxx | 55 -- vcl/ios/source/gdi/salcoretextstyle.cxx | 16 ++--- vcl/ios/source/gdi/salgdi.cxx | 30 - 10 files changed, 100 insertions(+), 126 deletions(-) New commits: commit fcf7f3596054f24bebf767f9cabfc96dfa577480 Author: Tor Lillqvist t...@iki.fi Date: Sat Jan 19 10:44:33 2013 +0200 Use SAL_INFO instead of home-grown msgs_debug If there is a need to optionally get a thread identifier or the function name into logging output (as msgs_debug did), we should figure out a way to do that in some elegant fashion in the sal logging macros instead of using some local solution in just one place in the code. Yes, the iOS and OS X CoreText code should be de-duplicated. Will happen soon. diff --git a/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx b/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx index 4646e77..f14e9c7 100644 --- a/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx +++ b/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx @@ -274,7 +274,7 @@ CoreTextPhysicalFontFace::CoreTextPhysicalFontFace( const ImplDevFontAttributes , m_bHasCJKSupport( false ) , m_bFontCapabilitiesRead( false ) { -msgs_debug(font,retain %p as %p,font, m_CTFontRef); +SAL_INFO( vcl.coretext.font, retain font as m_CTFontRef ); } CoreTextPhysicalFontFace::~CoreTextPhysicalFontFace() @@ -283,7 +283,7 @@ CoreTextPhysicalFontFace::~CoreTextPhysicalFontFace() { m_pCharMap-DeReference(); } -msgs_debug(font,release font %p, m_CTFontRef); +SAL_INFO( vcl.coretext.font, release m_CTFontRef ); SafeCFRelease(m_CTFontRef); } @@ -297,7 +297,7 @@ PhysicalFontFace* CoreTextPhysicalFontFace::Clone() const if( m_CTFontRef ) { pClone-m_CTFontRef = (CTFontRef)CFRetain(m_CTFontRef); -msgs_debug(font,clone ref %p into %p, m_CTFontRef, pClone-m_CTFontRef); +SAL_INFO( vcl.coretext.font, clone m_CTFontRef into pClone-m_CTFontRef ); } return pClone; } diff --git a/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx b/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx index 32b547b..e20bcba 100644 --- a/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx +++ b/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx @@ -53,14 +53,14 @@ CoreTextLayout::~CoreTextLayout() void CoreTextLayout::AdjustLayout( ImplLayoutArgs /*rArgs*/ ) { -msgs_debug(layout,--); -msgs_debug(layout,--); +SAL_INFO( vcl.coretext.layout, -- ); +SAL_INFO( vcl.coretext.layout, -- ); /* TODO */ } void CoreTextLayout::Clean() { -msgs_debug(layout,--); +SAL_INFO( vcl.coretext.layout, -- ); if(m_glyphs) { delete[] m_glyphs; @@ -94,12 +94,12 @@ void CoreTextLayout::Clean() SafeCFRelease(m_typesetter); SafeCFRelease(m_line); m_has_bound_rec = false; -msgs_debug(layout,--); +SAL_INFO( vcl.coretext.layout, -- ); } void CoreTextLayout::DrawText( SalGraphics rGraphics ) const { -msgs_debug(layout,--); +SAL_INFO( vcl.coretext.layout, -- ); AquaSalGraphics gr = static_castAquaSalGraphics(rGraphics); if(m_chars_count = 0 || !gr.CheckContext()) { @@ -108,19 +108,18 @@ void CoreTextLayout::DrawText( SalGraphics rGraphics ) const CGContextSaveGState( gr.mrContext ); Point pos = GetDrawPosition(Point(0,0)); #if 0 -msgs_debug(layout,at pos (%ld, %ld), pos.X(), pos.Y()); +SAL_INFO( vcl.coretext.layout, at pos ( pos.X() , pos.Y() ) ); CGContextSetTextMatrix(gr.mrContext, CGAffineTransformMakeScale(1.0, -1.0)); CGContextSetShouldAntialias( gr.mrContext, !gr.mbNonAntialiasedText ); CGContextSetTextPosition(gr.mrContext, pos.X(), pos.Y()); CTLineDraw(m_line, gr.mrContext); #else InitGIA(); -msgs_debug(layout,at- pos (%ld, %ld) ctfont=%p, pos.X(), pos.Y(), - m_style-GetFont()); +SAL_INFO( vcl.coretext.layout, at pos ( pos.X() , pos.Y() ) ctfont= m_style-GetFont() ); CGFontRef cg_font = CTFontCopyGraphicsFont(m_style-GetFont(), NULL); if(!cg_font) { -msgs_debug(layout, Error cg_font is %s, NULL); +SAL_INFO( vcl.coretext.layout, Error cg_font is NULL ); return; } CGContextSetFont(gr.mrContext, cg_font); @@ -144,7 +143,7 @@ void CoreTextLayout::DrawText( SalGraphics rGraphics ) const #endif // restore the original
[Libreoffice-commits] .: vcl/aqua vcl/inc
vcl/aqua/source/window/salframe.cxx| 58 - vcl/aqua/source/window/salframeview.mm | 37 - vcl/inc/aqua/salframeview.h|2 - 3 files changed, 97 deletions(-) New commits: commit 15938c2480a0de8c3ce5bc7289cf3df2d73918ac Author: Tor Lillqvist t...@iki.fi Date: Thu Jan 3 21:55:35 2013 +0200 fdo#58963: Revert fdo#39983: Support Mac OS X 10.7 full-screen mode It caused breakage of the existing slide-show full-screen mode. So let's revert for now. diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx index 388dffd..da36cfa 100644 --- a/vcl/aqua/source/window/salframe.cxx +++ b/vcl/aqua/source/window/salframe.cxx @@ -46,25 +46,6 @@ #include Carbon/Carbon.h #include postmac.h -#if MACOSX_SDK_VERSION 1070 - -enum { -NSFullScreenWindowMask = (1 14) -}; - -enum { -NSWindowCollectionBehaviorFullScreenPrimary = (1 7), -NSWindowCollectionBehaviorFullScreenAuxiliary = (1 8) -}; - -#if MACOSX_SDK_VERSION 1050 - -typedef NSUInteger NSWindowCollectionBehavior; - -#endif - -#endif - using namespace std; // === @@ -214,31 +195,6 @@ void AquaSalFrame::initWindowAndView() return; } -// On 10.7 and later, if the window is suitable and is -// resizable, we make it full-screenable. - -bool bAllowFullScreen = (0 == (mnStyle (SAL_FRAME_STYLE_DIALOG | SAL_FRAME_STYLE_TOOLTIP | SAL_FRAME_STYLE_SYSTEMCHILD | SAL_FRAME_STYLE_FLOAT | SAL_FRAME_STYLE_TOOLWINDOW | SAL_FRAME_STYLE_INTRO))); -bAllowFullScreen = (0 == (~mnStyle (SAL_FRAME_STYLE_SIZEABLE))); -bAllowFullScreen = (mpParent == NULL); - -if (GetSalData()-mnSystemVersion = 0x1070 - ((mnStyleMask NSTitledWindowMask) (mnStyleMask NSResizableWindowMask))) { - -// Hmm. The docs say that one should use NSInvocation whenever -// the method does not return an object. collectionBehavior -// returns an NSWindowCollectionBehavior (NSUInteger). So -// should I? Or maybe I should just use the low-level -// objc_msgSend()? -NSWindowCollectionBehavior behavior = (NSWindowCollectionBehavior) [mpWindow performSelector: @selector(collectionBehavior)]; - -SAL_INFO(vcl.macosx, OSL_THIS_FUNC : bAllowFullScreen= bAllowFullScreen , behavior= hex behavior); - -[mpWindow performSelector: @selector(setCollectionBehavior:) withObject: (id) (behavior | (bAllowFullScreen ? NSWindowCollectionBehaviorFullScreenPrimary : NSWindowCollectionBehaviorFullScreenAuxiliary))]; - -behavior = (NSWindowCollectionBehavior) [mpWindow performSelector: @selector(collectionBehavior)]; -SAL_INFO(vcl.macosx, OSL_THIS_FUNC : after setCollectionBehavior: behavior= hex behavior); -} - if( (mnStyle SAL_FRAME_STYLE_TOOLTIP) ) [mpWindow setIgnoresMouseEvents: YES]; else @@ -791,20 +747,6 @@ void AquaSalFrame::ShowFullScreen( sal_Bool bFullScreen, sal_Int32 nDisplay ) mbFullScreen = bFullScreen; -if (GetSalData()-mnSystemVersion = 0x1070) { -// If the system full-screen state already is our desired, do nothing -if ((([mpWindow styleMask] NSFullScreenWindowMask) == NSFullScreenWindowMask) == mbFullScreen) -return; - -SAL_INFO(vcl.macosx, OSL_THIS_FUNC : calling toggleFullScreen()); - -// Otherwise toggle the system full-screen state -[mpWindow performSelector: @selector(toggleFullScreen:)]; - -// Nothing more to do? -return; -} - if( bFullScreen ) { // hide the dock and the menubar if we are on the menu screen diff --git a/vcl/aqua/source/window/salframeview.mm b/vcl/aqua/source/window/salframeview.mm index 621b982..d6861a4 100644 --- a/vcl/aqua/source/window/salframeview.mm +++ b/vcl/aqua/source/window/salframeview.mm @@ -273,43 +273,6 @@ static AquaSalFrame* getMouseContainerFrame() } } --(void)windowDidEnterFullScreen: (NSNotification*)pNotification -{ -(void)pNotification; -YIELD_GUARD; - -if( !mpFrame || !AquaSalFrame::isAlive( mpFrame)) -return; - -SAL_INFO(vcl.macosx, OSL_THIS_FUNC : mbFullScreen was mpFrame-mbFullScreen); - -mpFrame-mbFullScreen = true; -} - --(void)windowDidExitFullScreen: (NSNotification*)pNotification -{ -(void)pNotification; -YIELD_GUARD; - -if( !mpFrame || !AquaSalFrame::isAlive( mpFrame)) -return; - -SAL_INFO(vcl.macosx, OSL_THIS_FUNC : mbFullScreen was mpFrame-mbFullScreen); - -mpFrame-mbFullScreen = false; - -// Without this, if viewing the Start Centre in the system -// full-screen state, when going back using the system's -// unfulscreen menubar button, the Start Centre ends up -// garbled. For some reason the same doesn't happen in Writer, -// Calc etc. -if( mpFrame-mbShown ) -{ -
[Libreoffice-commits] .: vcl/aqua vcl/inc
vcl/aqua/source/window/salframe.cxx| 54 + vcl/aqua/source/window/salframeview.mm | 37 ++ vcl/inc/aqua/salframeview.h|2 + 3 files changed, 93 insertions(+) New commits: commit b2e5a39babba902707dab28d81b843d1aef055dc Author: Tor Lillqvist t...@iki.fi Date: Fri Dec 21 15:26:36 2012 +0200 fdo#39983: Support Mac OS X 10.7 full-screen mode Should be good enough for now, at least doesn't break any existing functionality if you don't use the system provided full-screen buttons. Should continue to compile against older SDKs but still work also on newer OSes. There are some known glitches. For instance if you choose View:Full Screen, the window does go into the system full-screen state, but if you then use the system unfullscreen button on the (now no longer disabled, but hidden) menubar, LO keeps displaying its own small floating unfullscreen dialog... I also occasionally managed to get some menus in the menubar borked with no text!? But as traditionally a full-screened LO has no menubar at all, technically that isn't a regression;) Partially based on my own old patch, partially on http://svn.apache.org/viewvc?view=revisionrevision=1423520 , http://svn.apache.org/viewvc?view=revisionrevision=1423523 by Herbert Duerr h...@apache.org. Change-Id: I546c58f7cee9f8cb6c746eb014d8d5a8af3619cb diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx index 5aa6f0f..b836784 100644 --- a/vcl/aqua/source/window/salframe.cxx +++ b/vcl/aqua/source/window/salframe.cxx @@ -46,6 +46,18 @@ #include Carbon/Carbon.h #include postmac.h +#if !defined(MAC_OS_X_VERSION_10_7) + +enum { +NSFullScreenWindowMask = (1 14) +}; + +enum { +NSWindowCollectionBehaviorFullScreenPrimary = (1 7), +NSWindowCollectionBehaviorFullScreenAuxiliary = (1 8) +}; + +#endif using namespace std; @@ -196,6 +208,31 @@ void AquaSalFrame::initWindowAndView() return; } +// On 10.7 and later, if the window is suitable and is +// resizable, we make it full-screenable. + +bool bAllowFullScreen = (0 == (mnStyle (SAL_FRAME_STYLE_DIALOG | SAL_FRAME_STYLE_TOOLTIP | SAL_FRAME_STYLE_SYSTEMCHILD | SAL_FRAME_STYLE_FLOAT | SAL_FRAME_STYLE_TOOLWINDOW | SAL_FRAME_STYLE_INTRO))); +bAllowFullScreen = (0 == (~mnStyle (SAL_FRAME_STYLE_SIZEABLE))); +bAllowFullScreen = (mpParent == NULL); + +if (GetSalData()-mnSystemVersion = 0x1070 + ((mnStyleMask NSTitledWindowMask) (mnStyleMask NSResizableWindowMask))) { + +// Hmm. The docs say that one should use NSInvocation whenever +// the method does not return an object. collectionBehavior +// returns an NSWindowCollectionBehavior (NSUInteger). So +// should I? Or maybe I should just use the low-level +// objc_msgSend()? +NSWindowCollectionBehavior behavior = (NSWindowCollectionBehavior) [mpWindow performSelector: @selector(collectionBehavior)]; + +SAL_INFO(vcl.macosx, OSL_THIS_FUNC : bAllowFullScreen= bAllowFullScreen , behavior= hex behavior); + +[mpWindow performSelector: @selector(setCollectionBehavior:) withObject: (id) (behavior | (bAllowFullScreen ? NSWindowCollectionBehaviorFullScreenPrimary : NSWindowCollectionBehaviorFullScreenAuxiliary))]; + +behavior = (NSWindowCollectionBehavior) [mpWindow performSelector: @selector(collectionBehavior)]; +SAL_INFO(vcl.macosx, OSL_THIS_FUNC : after setCollectionBehavior: behavior= hex behavior); +} + if( (mnStyle SAL_FRAME_STYLE_TOOLTIP) ) [mpWindow setIgnoresMouseEvents: YES]; else @@ -741,10 +778,27 @@ void AquaSalFrame::ShowFullScreen( sal_Bool bFullScreen, sal_Int32 nDisplay ) // #i113170# may not be the main thread if called from UNO API SalData::ensureThreadAutoreleasePool(); +SAL_INFO(vcl.macosx, OSL_THIS_FUNC : mbFullScreen= mbFullScreen , bFullScreen= bFullScreen); + if( mbFullScreen == bFullScreen ) return; mbFullScreen = bFullScreen; + +if (GetSalData()-mnSystemVersion = 0x1070) { +// If the system full-screen state already is our desired, do nothing +if ((([mpWindow styleMask] NSFullScreenWindowMask) == NSFullScreenWindowMask) == mbFullScreen) +return; + +SAL_INFO(vcl.macosx, OSL_THIS_FUNC : calling toggleFullScreen()); + +// Otherwise toggle the system full-screen state +[mpWindow performSelector: @selector(toggleFullScreen:)]; + +// Nothing more to do? +return; +} + if( bFullScreen ) { // hide the dock and the menubar if we are on the menu screen diff --git a/vcl/aqua/source/window/salframeview.mm b/vcl/aqua/source/window/salframeview.mm index d6861a4..621b982 100644 --- a/vcl/aqua/source/window/salframeview.mm +++
[Libreoffice-commits] .: vcl/aqua vcl/inc
vcl/aqua/source/gdi/atsui/salgdi.cxx | 29 +++-- vcl/inc/aqua/atsui/salgdi.h |1 + 2 files changed, 28 insertions(+), 2 deletions(-) New commits: commit f1651ee579bf38a49b839dbcb28ac38c0163a3d2 Author: Sergey Farbotka z8serge...@gmail.com Date: Fri Sep 21 14:12:09 2012 +0200 Fix fdo#55142 - wrong character pos calculation on mac. Change-Id: If8a0f527102b70bf1dcf292f8df31aaff9fba5c8 diff --git a/vcl/aqua/source/gdi/atsui/salgdi.cxx b/vcl/aqua/source/gdi/atsui/salgdi.cxx index 5c0bff7..a57068d 100644 --- a/vcl/aqua/source/gdi/atsui/salgdi.cxx +++ b/vcl/aqua/source/gdi/atsui/salgdi.cxx @@ -354,6 +354,8 @@ AquaSalGraphics::AquaSalGraphics() { // create the style object for font attributes ATSUCreateStyle( maATSUStyle ); + +ResetFontStyle(); } // --- @@ -579,6 +581,29 @@ bool AquaSalGraphics::AddTempDevFont( ImplDevFontList*, // --- +void AquaSalGraphics::ResetFontStyle() +{ +ATSUClearStyle(maATSUStyle); + +// Set justification attributes +ATSJustPriorityWidthDeltaOverrides nPriorityJustOverrides; +memset(nPriorityJustOverrides, 0, sizeof(nPriorityJustOverrides)); + +nPriorityJustOverrides[kJUSTLetterPriority].growFlags = kJUSTOverrideLimits; +nPriorityJustOverrides[kJUSTLetterPriority].shrinkFlags = kJUSTOverrideLimits; + +ATSUAttributeTagtheTag = kATSUPriorityJustOverrideTag; +ByteCount theSize = sizeof(ATSJustPriorityWidthDeltaOverrides); +ATSUAttributeValuePtr thePtr = nPriorityJustOverrides; +OSStatus eStatus = ATSUSetAttributes(maATSUStyle, 1, theTag, theSize, thePtr); +if (eStatus != noErr) +{ +DBG_WARNING(AquaSalGraphics::ResetFontStyle() : Could not override justification attributes!\n); +} +} + +// --- + // callbacks from ATSUGlyphGetCubicPaths() fore GetGlyphOutline() struct GgoData { basegfx::B2DPolygon maPolygon; basegfx::B2DPolyPolygon* mpPolyPoly; }; @@ -698,7 +723,7 @@ sal_uInt16 AquaSalGraphics::SetFont( FontSelectPattern* pReqFont, int /*nFallbac { if( !pReqFont ) { -ATSUClearStyle( maATSUStyle ); +ResetFontStyle(); mpMacFontData = NULL; return 0; } @@ -784,7 +809,7 @@ sal_uInt16 AquaSalGraphics::SetFont( FontSelectPattern* pReqFont, int /*nFallbac if( eStatus != noErr ) { DBG_WARNING( AquaSalGraphics::SetFont() : Could not set font attributes!\n); -ATSUClearStyle( maATSUStyle ); +ResetFontStyle(); mpMacFontData = NULL; return 0; } diff --git a/vcl/inc/aqua/atsui/salgdi.h b/vcl/inc/aqua/atsui/salgdi.h index 19fe1f4..eeb7aa4 100644 --- a/vcl/inc/aqua/atsui/salgdi.h +++ b/vcl/inc/aqua/atsui/salgdi.h @@ -353,6 +353,7 @@ private: bool GetRawFontData( const PhysicalFontFace* pFontData, std::vectorunsigned char rBuffer, bool* pJustCFF ); +void ResetFontStyle(); }; // --- some trivial inlines ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] .: vcl/aqua vcl/inc
vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm |2 - vcl/aqua/source/dtrans/DropTarget.cxx|9 + vcl/aqua/source/dtrans/PictToBmpFlt.cxx | 16 -- vcl/aqua/source/gdi/atsui/salatslayout.cxx |8 ++--- vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx |4 +- vcl/aqua/source/gdi/coretext/salgdi.cxx |2 - vcl/aqua/source/gdi/salbmp.cxx |2 - vcl/aqua/source/gdi/salgdicommon.cxx | 30 +-- vcl/aqua/source/gdi/salnativewidgets.cxx |2 - vcl/aqua/source/gdi/salprn.cxx |2 - vcl/aqua/source/window/salframe.cxx |6 +-- vcl/aqua/source/window/salframeview.mm |6 +-- vcl/inc/aqua/atsui/salgdi.h |8 ++--- vcl/inc/aqua/common.h|2 - vcl/inc/aqua/coretext/salcoretextlayout.hxx |4 +- vcl/inc/aqua/coretext/salgdi.h | 12 +-- vcl/inc/aqua/salframe.h |2 - vcl/inc/aqua/salgdicommon.hxx|4 +- 18 files changed, 77 insertions(+), 44 deletions(-) New commits: commit 25f935bfb44b87271eb11e719c4d1fb8624bdd02 Author: Tor Lillqvist t...@iki.fi Date: Thu Sep 20 00:54:36 2012 +0300 64-bit fixes Change-Id: I268ccab01e030535f04ef1256dc702b07cbc6611 diff --git a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm index 31978a6..4b38b15 100644 --- a/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm +++ b/vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm @@ -107,7 +107,7 @@ using namespace ::rtl; +(void)addColor:(sal_Int32)salColor forAttribute:(NSString *)attribute andRange:(NSRange)range toString:(NSMutableAttributedString *)string { if ( salColor != -1 ) { -float elements[] = { salColor 0x00ff, salColor 0xff00, salColor 0x00ff }; +CGFloat elements[] = { salColor 0x00ff, salColor 0xff00, salColor 0x00ff }; CGColorRef color = CGColorCreate ( CGColorSpaceCreateWithName ( kCGColorSpaceGenericRGB ), elements ); [ string addAttribute: attribute value: (id) color range: range ]; CGColorRelease ( color ); diff --git a/vcl/aqua/source/dtrans/DropTarget.cxx b/vcl/aqua/source/dtrans/DropTarget.cxx index bb46e21..c799d92 100644 --- a/vcl/aqua/source/dtrans/DropTarget.cxx +++ b/vcl/aqua/source/dtrans/DropTarget.cxx @@ -296,6 +296,7 @@ NSDragOperation DropTarget::draggingUpdated(id sender) //NSLog(@Drag update: Source actions: %x proposed action %x selected action %x, mDragSourceSupportedActions, currentAction, mSelectedDropAction); } +#ifndef __LP64__ // Weird but it appears as if there is no method in Cocoa // to create a kThemeCopyArrowCursor hence we have to use // Carbon to do it @@ -305,7 +306,9 @@ NSDragOperation DropTarget::draggingUpdated(id sender) SetThemeCursor(kThemeCopyArrowCursor); else SetThemeCursor(kThemeArrowCursor); - +#else + // FIXME: SetThemeCursor replacement? +#endif return dragOp; } @@ -316,7 +319,9 @@ void DropTarget::draggingExited(id /*sender*/) fire_dragExit(dte); mDragSourceSupportedActions = DNDConstants::ACTION_NONE; mSelectedDropAction = DNDConstants::ACTION_NONE; +#ifndef __LP64__ SetThemeCursor(kThemeArrowCursor); +#endif } @@ -370,7 +375,9 @@ void DropTarget::concludeDragOperation(id /*sender*/) mDragSourceSupportedActions = DNDConstants::ACTION_NONE; mSelectedDropAction = DNDConstants::ACTION_NONE; mXCurrentDragClipboard = uno::ReferenceXClipboard(); +#ifndef __LP64__ SetThemeCursor(kThemeArrowCursor); +#endif } diff --git a/vcl/aqua/source/dtrans/PictToBmpFlt.cxx b/vcl/aqua/source/dtrans/PictToBmpFlt.cxx index 8a545da..0bbb33b 100644 --- a/vcl/aqua/source/dtrans/PictToBmpFlt.cxx +++ b/vcl/aqua/source/dtrans/PictToBmpFlt.cxx @@ -39,6 +39,11 @@ bool PICTtoBMP(com::sun::star::uno::Sequencesal_Int8 aPict, bool result = false; +#ifdef __LP64__ + // FIXME + (void) aPict; + (void) aBmp; +#else ComponentInstance bmpExporter; if (OpenADefaultComponent(GraphicsExporterComponentType, kQTFileTypeBMP, @@ -78,7 +83,7 @@ bool PICTtoBMP(com::sun::star::uno::Sequencesal_Int8 aPict, DisposeHandle(hPict); DisposeHandle(hBmp); CloseComponent(bmpExporter); - +#endif return result; } @@ -103,12 +108,17 @@ bool BMPtoPICT(com::sun::star::uno::Sequencesal_Int8 aBmp, bool result = false; Handle hBmp; - ComponentInstance pictExporter; if ((PtrToHand(aBmp.getArray(), hBmp, aBmp.getLength()) != noErr)) { return result; } +#ifdef __LP64__ + // FIXME + (void) aPict; +#else + ComponentInstance pictExporter; + if (OpenADefaultComponent(GraphicsImporterComponentType,
[Libreoffice-commits] .: vcl/aqua vcl/inc
vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx | 40 +- vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx| 25 +-- vcl/aqua/source/gdi/coretext/salcoretextstyle.cxx |7 ++- vcl/aqua/source/gdi/coretext/salgdi.cxx | 19 ++-- vcl/inc/aqua/coretext/salcoretextstyle.hxx|3 - vcl/inc/aqua/coretext/salgdi.h|6 -- 6 files changed, 57 insertions(+), 43 deletions(-) New commits: commit 5aaef82232f7f51ddd658f3ad34903f3fe7107d4 Author: Norbert Thiebaud nthieb...@gmail.com Date: Sat Jul 14 00:13:40 2012 +0200 coretext: use only the FontFace ref from the Style Change-Id: I696065f6f60fb55eaa24e4a8b4cbff1e93856f04 Reviewed-on: https://gerrit.libreoffice.org/306 Reviewed-by: Norbert Thiebaud nthieb...@gmail.com Tested-by: Norbert Thiebaud nthieb...@gmail.com diff --git a/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx b/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx index a54cfb9..d02838a 100644 --- a/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx +++ b/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx @@ -196,24 +196,31 @@ SystemFontList::SystemFontList() { CFArrayRef font_descriptors = CTFontCollectionCreateMatchingFontDescriptors(font_collection); -for(int i = 0; i CFArrayGetCount(font_descriptors); i++) +if(font_descriptors) { -CTFontDescriptorRef font_descriptor = (CTFontDescriptorRef)CFArrayGetValueAtIndex(font_descriptors, i); -CTFontRef font = CTFontCreateWithFontDescriptor(font_descriptor, 0, NULL); -ImplDevFontAttributes devfont_attr; -if(GetDevFontAttributes( font_descriptor, devfont_attr ) ) +for(int i = 0; i CFArrayGetCount(font_descriptors); i++) { -CoreTextPhysicalFontFace* font_data = new CoreTextPhysicalFontFace(devfont_attr, font); -if(font_data font_data-GetCTFont()) +CTFontDescriptorRef font_descriptor = (CTFontDescriptorRef)CFArrayGetValueAtIndex(font_descriptors, i); +CTFontRef font = CTFontCreateWithFontDescriptor(font_descriptor, 0, NULL); +if(font) { -m_aFontContainer [ font_data-GetCTFont() ] = font_data; +ImplDevFontAttributes devfont_attr; +if(GetDevFontAttributes( font_descriptor, devfont_attr ) ) +{ +CoreTextPhysicalFontFace* font_face = new CoreTextPhysicalFontFace(devfont_attr, font); +if(font_face font_face-GetCTFont()) +{ +m_aFontContainer [ font_face-GetCTFont() ] = font_face; +} +} +CFRelease(font); } } -CFRelease(font); +CFRelease(font_descriptors); } -CFRelease(font_descriptors); +CFRelease(font_collection); } -CFRelease(font_collection); + } SystemFontList::~SystemFontList() @@ -250,6 +257,7 @@ CoreTextPhysicalFontFace::CoreTextPhysicalFontFace( const ImplDevFontAttributes , m_bHasCJKSupport( false ) , m_bFontCapabilitiesRead( false ) { +msgs_debug(font,retain %p as %p,font, m_CTFontRef); } CoreTextPhysicalFontFace::~CoreTextPhysicalFontFace() @@ -258,10 +266,8 @@ CoreTextPhysicalFontFace::~CoreTextPhysicalFontFace() { m_pCharMap-DeReference(); } -if( m_CTFontRef ) -{ -CFRelease(m_CTFontRef); -} +msgs_debug(font,release font %p, m_CTFontRef); +SafeCFRelease(m_CTFontRef); } PhysicalFontFace* CoreTextPhysicalFontFace::Clone() const @@ -274,6 +280,7 @@ PhysicalFontFace* CoreTextPhysicalFontFace::Clone() const if( m_CTFontRef ) { pClone-m_CTFontRef = (CTFontRef)CFRetain(m_CTFontRef); +msgs_debug(font,clone ref %p into %p, m_CTFontRef, pClone-m_CTFontRef); } return pClone; } @@ -391,9 +398,6 @@ bool CoreTextPhysicalFontFace::GetRawFontData( std::vectorunsigned char rBuff if(CFF_table) { *pJustCFF = CFDataGetLength(CFF_table) ? true : false; -} -if(CFF_table) -{ CFRelease(CFF_table); return true; } diff --git a/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx b/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx index 408f2b2..07ff289 100644 --- a/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx +++ b/vcl/aqua/source/gdi/coretext/salcoretextlayout.cxx @@ -98,8 +98,14 @@ void CoreTextLayout::DrawText( SalGraphics rGraphics ) const CTLineDraw(m_line, gr.mrContext); #else InitGIA(); -msgs_debug(layout,at- pos (%ld, %ld), pos.X(), pos.Y()); +msgs_debug(layout,at- pos (%ld, %ld) ctfont=%p, pos.X(), pos.Y(), + m_style-GetFont()); CGFontRef cg_font
[Libreoffice-commits] .: vcl/aqua vcl/inc
vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx | 26 +- vcl/aqua/source/gdi/coretext/salcoretextstyle.cxx | 13 - vcl/aqua/source/gdi/coretext/salgdi.cxx | 16 +-- vcl/inc/aqua/coretext/salcoretextfontutils.hxx| 12 vcl/inc/aqua/coretext/salcoretextstyle.hxx|4 +- vcl/inc/aqua/coretext/salgdi.h|2 - 6 files changed, 36 insertions(+), 37 deletions(-) New commits: commit e1b61b2dafd8e84c60f5ae0eebf04165ea55d353 Author: Norbert Thiebaud nthieb...@gmail.com Date: Mon Jul 2 11:37:15 2012 -0500 rename ImplCoreTextFontData in CoreTextPhysicalFontFace Change-Id: Idcf9c21ab1a16b8d83f925aa742f1a5aa7089bc3 Reviewed-on: https://gerrit.libreoffice.org/305 Reviewed-by: Norbert Thiebaud nthieb...@gmail.com Tested-by: Norbert Thiebaud nthieb...@gmail.com diff --git a/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx b/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx index faaf11b..a54cfb9 100644 --- a/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx +++ b/vcl/aqua/source/gdi/coretext/salcoretextfontutils.cxx @@ -203,7 +203,7 @@ SystemFontList::SystemFontList() ImplDevFontAttributes devfont_attr; if(GetDevFontAttributes( font_descriptor, devfont_attr ) ) { -ImplCoreTextFontData* font_data = new ImplCoreTextFontData(devfont_attr, font); +CoreTextPhysicalFontFace* font_data = new CoreTextPhysicalFontFace(devfont_attr, font); if(font_data font_data-GetCTFont()) { m_aFontContainer [ font_data-GetCTFont() ] = font_data; @@ -224,7 +224,7 @@ SystemFontList::~SystemFontList() m_aFontContainer.clear(); } -ImplCoreTextFontData* SystemFontList::GetFontDataFromRef( CTFontRef font ) const +CoreTextPhysicalFontFace* SystemFontList::GetFontDataFromRef( CTFontRef font ) const { CoreTextFontContainer::const_iterator it = m_aFontContainer.find( font ); return it == m_aFontContainer.end() ? NULL : (*it).second; @@ -240,7 +240,7 @@ void SystemFontList::AnnounceFonts( ImplDevFontList rFontList ) const } } -ImplCoreTextFontData::ImplCoreTextFontData( const ImplDevFontAttributes rDFA, CTFontRef font ) +CoreTextPhysicalFontFace::CoreTextPhysicalFontFace( const ImplDevFontAttributes rDFA, CTFontRef font ) : PhysicalFontFace( rDFA, 0 ) , m_CTFontRef((CTFontRef)CFRetain(font)) , m_pCharMap( NULL ) @@ -252,7 +252,7 @@ ImplCoreTextFontData::ImplCoreTextFontData( const ImplDevFontAttributes rDFA, C { } -ImplCoreTextFontData::~ImplCoreTextFontData() +CoreTextPhysicalFontFace::~CoreTextPhysicalFontFace() { if( m_pCharMap ) { @@ -264,9 +264,9 @@ ImplCoreTextFontData::~ImplCoreTextFontData() } } -PhysicalFontFace* ImplCoreTextFontData::Clone() const +PhysicalFontFace* CoreTextPhysicalFontFace::Clone() const { -ImplCoreTextFontData* pClone = new ImplCoreTextFontData(*this); +CoreTextPhysicalFontFace* pClone = new CoreTextPhysicalFontFace(*this); if( m_pCharMap ) { m_pCharMap-AddReference(); @@ -278,12 +278,12 @@ PhysicalFontFace* ImplCoreTextFontData::Clone() const return pClone; } -ImplFontEntry* ImplCoreTextFontData::CreateFontInstance(FontSelectPattern rFSD) const +ImplFontEntry* CoreTextPhysicalFontFace::CreateFontInstance(FontSelectPattern rFSD) const { return new ImplFontEntry(rFSD); } -const ImplFontCharMap* ImplCoreTextFontData::GetImplFontCharMap() +const ImplFontCharMap* CoreTextPhysicalFontFace::GetImplFontCharMap() { // return the cached charmap if( m_pCharMap ) @@ -316,7 +316,7 @@ const ImplFontCharMap* ImplCoreTextFontData::GetImplFontCharMap() return m_pCharMap; } -bool ImplCoreTextFontData::GetImplFontCapabilities(vcl::FontCapabilities rFontCapabilities) +bool CoreTextPhysicalFontFace::GetImplFontCapabilities(vcl::FontCapabilities rFontCapabilities) { // read this only once per font if( m_bFontCapabilitiesRead ) @@ -380,7 +380,7 @@ void addTable(struct font_table* table, CTFontTableTag tag, CFDataRef data) } } -bool ImplCoreTextFontData::GetRawFontData( std::vectorunsigned char rBuffer, bool* pJustCFF ) const +bool CoreTextPhysicalFontFace::GetRawFontData( std::vectorunsigned char rBuffer, bool* pJustCFF ) const { bool rc; int table_count = 0; @@ -528,7 +528,7 @@ bool ImplCoreTextFontData::GetRawFontData( std::vectorunsigned char rBuffer, return rc; } -void ImplCoreTextFontData::DetermineCJKSupport_OS2(CFDataRef rOS2Table) +void CoreTextPhysicalFontFace::DetermineCJKSupport_OS2(CFDataRef rOS2Table) { if(CFDataGetLength(rOS2Table) = 48) { @@ -545,7 +545,7 @@ void ImplCoreTextFontData::DetermineCJKSupport_OS2(CFDataRef rOS2Table) } } -void ImplCoreTextFontData::DetermineCJKSupport_cmap(CFDataRef rCmapTable) +void
[Libreoffice-commits] .: vcl/aqua vcl/inc vcl/ios vcl/unx vcl/win
vcl/aqua/source/gdi/salnativewidgets.cxx |2 -- vcl/inc/vcl/salnativewidgets.hxx |5 - vcl/ios/source/gdi/salnativewidgets.cxx |1 - vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx |8 +--- vcl/unx/kde/salnativewidgets-kde.cxx |1 - vcl/unx/kde4/KDESalGraphics.cxx |7 --- vcl/win/source/gdi/salnativewidgets-luna.cxx | 17 - 7 files changed, 1 insertion(+), 40 deletions(-) New commits: commit 914c8163e3a5014d9d2885444b6383f6fdcea529 Author: Ivan Timofeev timofeev@gmail.com Date: Sun Jul 1 15:18:59 2012 +0400 vcl: CTRL_FIXEDBORDER is dead since ef877aab7e Change-Id: I568b55c3b0b799bdc91ba081e7375debce9618aa diff --git a/vcl/aqua/source/gdi/salnativewidgets.cxx b/vcl/aqua/source/gdi/salnativewidgets.cxx index df6c6fa..bb7392e 100644 --- a/vcl/aqua/source/gdi/salnativewidgets.cxx +++ b/vcl/aqua/source/gdi/salnativewidgets.cxx @@ -314,7 +314,6 @@ sal_Bool AquaSalGraphics::IsNativeControlSupported( ControlType nType, ControlPa case CTRL_TAB_ITEM: case CTRL_TAB_PANE: case CTRL_TAB_BODY: // see vcl/source/window/tabpage.cxx -case CTRL_FIXEDBORDER: if( nPart == PART_ENTIRE_CONTROL || nPart == PART_TABS_DRAW_RTL || nPart == HAS_BACKGROUND_TEXTURE ) @@ -517,7 +516,6 @@ sal_Bool AquaSalGraphics::drawNativeControl(ControlType nType, } break; -case CTRL_FIXEDBORDER: case CTRL_TOOLBAR: { HIThemeMenuItemDrawInfo aMenuItemDrawInfo; diff --git a/vcl/inc/vcl/salnativewidgets.hxx b/vcl/inc/vcl/salnativewidgets.hxx index c082b38..a3c9bab 100644 --- a/vcl/inc/vcl/salnativewidgets.hxx +++ b/vcl/inc/vcl/salnativewidgets.hxx @@ -109,11 +109,6 @@ typedef sal_uInt32 ControlType; // A separator line #define CTRL_FIXEDLINE 80 -// A rectangular border, like a -// Tab Pane, but without the -// possible gap for a tab -#define CTRL_FIXEDBORDER90 - // A toolbar control with buttons and a grip #define CTRL_TOOLBAR100 diff --git a/vcl/ios/source/gdi/salnativewidgets.cxx b/vcl/ios/source/gdi/salnativewidgets.cxx index c2d5068..71dda98 100644 --- a/vcl/ios/source/gdi/salnativewidgets.cxx +++ b/vcl/ios/source/gdi/salnativewidgets.cxx @@ -121,7 +121,6 @@ sal_Bool IosSalGraphics::IsNativeControlSupported( ControlType nType, ControlPar case CTRL_TAB_ITEM: case CTRL_TAB_PANE: case CTRL_TAB_BODY: // see vcl/source/window/tabpage.cxx -case CTRL_FIXEDBORDER: if( nPart == PART_ENTIRE_CONTROL || nPart == PART_TABS_DRAW_RTL || nPart == HAS_BACKGROUND_TEXTURE ) diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index 2b5d3c8..7735a74 100644 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -592,7 +592,6 @@ sal_Bool GtkSalGraphics::IsNativeControlSupported( ControlType nType, ControlPar case CTRL_TAB_ITEM: case CTRL_TAB_PANE: case CTRL_TAB_BODY: -case CTRL_FIXEDBORDER: if(nPart==PART_ENTIRE_CONTROL || nPart==PART_TABS_DRAW_RTL) return true; break; @@ -870,7 +869,7 @@ sal_Bool GtkSalGraphics::drawNativeControl(ControlType nType, { returnVal = NWPaintGTKComboBox( gdkDrawable, nType, nPart, aCtrlRect, aClip, nState, aValue, rCaption ); } -else if ( (nType==CTRL_TAB_ITEM) || (nType==CTRL_TAB_PANE) || (nType==CTRL_TAB_BODY) || (nType==CTRL_FIXEDBORDER) ) +else if ( (nType==CTRL_TAB_ITEM) || (nType==CTRL_TAB_PANE) || (nType==CTRL_TAB_BODY) ) { if ( nType == CTRL_TAB_BODY ) returnVal = sal_True; @@ -2593,7 +2592,6 @@ sal_Bool GtkSalGraphics::NWPaintGTKTabItem( ControlType nType, ControlPart, case CTRL_TAB_BODY: break; -case CTRL_FIXEDBORDER: case CTRL_TAB_PANE: gtk_paint_box_gap( gWidgetData[m_nXScreen].gNotebookWidget-style, pixmap, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, gWidgetData[m_nXScreen].gNotebookWidget, (char *)notebook, 0, 0, pixmapRect.GetWidth(), pixmapRect.GetHeight(), GTK_POS_TOP, 0, 0 ); @@ -2633,10 +2631,6 @@ sal_Bool GtkSalGraphics::NWPaintGTKTabItem( ControlType nType, ControlPart, break; } -// Crux seems to think it can make the pane without a left edge -if ( nType == CTRL_FIXEDBORDER ) -pixmapRect.Move( 1, 0 ); - // cache data if( nType == CTRL_TAB_ITEM ) aCacheItems.Fill( nType, nState, pixmapRect, pixmap ); diff --git a/vcl/unx/kde/salnativewidgets-kde.cxx b/vcl/unx/kde/salnativewidgets-kde.cxx index e9e4d65..6e9871b 100644 --- a/vcl/unx/kde/salnativewidgets-kde.cxx +++ b/vcl/unx/kde/salnativewidgets-kde.cxx @@ -1215,7 +1215,6 @@ sal_Bool KDESalGraphics::IsNativeControlSupported( ControlType nType,
[Libreoffice-commits] .: vcl/aqua vcl/inc vcl/ios vcl/source vcl/unx vcl/win
vcl/aqua/source/app/salinst.cxx |7 +-- vcl/inc/salinst.hxx |2 +- vcl/ios/source/app/salinst.cxx|7 +-- vcl/source/app/svapp.cxx | 14 +- vcl/unx/generic/plugadapt/salplug.cxx |7 +-- vcl/win/source/app/salinst.cxx|2 +- 6 files changed, 30 insertions(+), 9 deletions(-) New commits: commit 01e0b770a5ce58de44283465ba51b03a1ee0db0c Author: Stephan Bergmann sberg...@redhat.com Date: Wed Sep 28 15:08:45 2011 +0200 Let SalAbort dump core on developer builds. diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx index df0d95c..489b1dd 100644 --- a/vcl/aqua/source/app/salinst.cxx +++ b/vcl/aqua/source/app/salinst.cxx @@ -258,14 +258,17 @@ sal_Bool ImplSVMainHook( int * pnInit ) // === -void SalAbort( const XubString rErrorText ) +void SalAbort( const XubString rErrorText, bool bDumpCore ) { if( !rErrorText.Len() ) fprintf( stderr, Application Error ); else fprintf( stderr, %s , ByteString( rErrorText, gsl_getSystemTextEncoding() ).GetBuffer() ); -abort(); +if( bDumpCore ) +abort(); +else +_exit(1); } // --- diff --git a/vcl/inc/salinst.hxx b/vcl/inc/salinst.hxx index d878dd7..194e61a 100644 --- a/vcl/inc/salinst.hxx +++ b/vcl/inc/salinst.hxx @@ -181,7 +181,7 @@ void DestroySalInstance( SalInstance* pInst ); // - SalInstance-Functions - // - -void SalAbort( const XubString rErrorText ); +void SalAbort( const XubString rErrorText, bool bDumpCore ); VCL_PLUGIN_PUBLIC const ::rtl::OUString SalGetDesktopEnvironment(); diff --git a/vcl/ios/source/app/salinst.cxx b/vcl/ios/source/app/salinst.cxx index fb5bfb9..f7c9685 100644 --- a/vcl/ios/source/app/salinst.cxx +++ b/vcl/ios/source/app/salinst.cxx @@ -142,14 +142,17 @@ sal_Bool ImplSVMainHook( int * pnInit ) // === -void SalAbort( const XubString rErrorText ) +void SalAbort( const XubString rErrorText, bool bDumpCore ) { if( !rErrorText.Len() ) fprintf( stderr, Application Error ); else fprintf( stderr, %s , ByteString( rErrorText, gsl_getSystemTextEncoding() ).GetBuffer() ); -abort(); +if( bDumpCore ) +abort(); +else +_exit(1); } // --- diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index f426c11..b41f926 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -393,7 +393,19 @@ sal_uInt16 Application::Exception( sal_uInt16 nError ) void Application::Abort( const XubString rErrorText ) { -SalAbort( rErrorText ); +//HACK: Dump core iff --norestore command line argument is given (assuming +// this process is run by developers who are interested in cores, vs. end +// users who are not): +bool dumpCore = false; +sal_uInt16 n = GetCommandLineParamCount(); +for (sal_uInt16 i = 0; i != n; ++i) { +if (GetCommandLineParam(i).EqualsAscii(--norestore)) { +dumpCore = true; +break; +} +} + +SalAbort( rErrorText, dumpCore ); } // --- diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx index 51321b8..d707760 100644 --- a/vcl/unx/generic/plugadapt/salplug.cxx +++ b/vcl/unx/generic/plugadapt/salplug.cxx @@ -267,13 +267,16 @@ void DeInitSalMain() { } -void SalAbort( const XubString rErrorText ) +void SalAbort( const XubString rErrorText, bool bDumpCore ) { if( !rErrorText.Len() ) std::fprintf( stderr, Application Error\n ); else std::fprintf( stderr, %s\n, rtl::OUStringToOString(rErrorText, osl_getThreadTextEncoding()).getStr() ); -exit(-1); +if( bDumpCore ) +abort(); +else +_exit(1); } static const char * desktop_strings[] = { none, unknown, GNOME, KDE, KDE4 }; diff --git a/vcl/win/source/app/salinst.cxx b/vcl/win/source/app/salinst.cxx index 5e8930f..a0d41a6 100644 --- a/vcl/win/source/app/salinst.cxx +++ b/vcl/win/source/app/salinst.cxx @@ -84,7 +84,7 @@ // === -void SalAbort( const XubString rErrorText ) +void SalAbort( const XubString rErrorText, bool ) { ImplFreeSalGDI(); ___ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits