[Libreoffice-commits] .: 22 commits - canvas/source unotools/source vcl/source vcl/unx
Petr Mladek
pmladek at kemper.freedesktop.org
Wed Apr 6 12:27:47 PDT 2011
canvas/source/cairo/cairo_canvashelper.cxx | 2 +-
unotools/source/config/configmgr.cxx | 2 +-
unotools/source/misc/fontdefs.cxx | 8 ++++++++
vcl/source/gdi/gdimtf.cxx | 2 ++
vcl/unx/gtk/a11y/atkutil.cxx | 5 +++++
vcl/unx/kde4/KDESalGraphics.cxx | 2 ++
vcl/unx/kde4/KDEXLib.cxx | 10 ++++++++++
vcl/unx/source/gdi/salgdi3.cxx | 2 +-
8 files changed, 30 insertions(+), 3 deletions(-)
New commits:
commit 12b38edca935bb403632fca34b5904630d4f6a3b
Merge: 0b2b6df... 387dcf9...
Author: Petr Mladek <pmladek at suse.cz>
Date: Wed Apr 6 19:25:25 2011 +0200
Merge remote-tracking branch 'origin/libreoffice-3-4'
commit 387dcf9f1f5d509be76473f7eb83ee9309a04f6b
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Apr 6 16:50:36 2011 +0100
merge oooXXXXX.vcl.x86_64.impressatk.diff from build
diff --git a/vcl/unx/gtk/a11y/atkutil.cxx b/vcl/unx/gtk/a11y/atkutil.cxx
index c7ae26d..68bb949 100644
--- a/vcl/unx/gtk/a11y/atkutil.cxx
+++ b/vcl/unx/gtk/a11y/atkutil.cxx
@@ -597,6 +597,7 @@ static void handle_menu_highlighted(::VclMenuEvent const * pEvent)
long WindowEventHandler(void *, ::VclSimpleEvent const * pEvent)
{
+ try {
switch (pEvent->GetId())
{
case VCLEVENT_WINDOW_SHOW:
@@ -663,6 +664,10 @@ long WindowEventHandler(void *, ::VclSimpleEvent const * pEvent)
default:
break;
}
+ } catch(lang::IndexOutOfBoundsException e)
+ {
+ g_warning("Focused object has invalid index in parent");
+ }
return 0;
}
commit ee39d120e7730970e8f5ce57ec6ec3abee37efed
Author: LuboÅ¡ LuÅák <l.lunak at suse.cz>
Date: Tue Apr 5 18:25:22 2011 +0200
rework confused and racy clipboard event polling (bnc#683941)
It does not work reliably to just poll on the X connection fd,
as there may be already incoming events in the Xlib queue (removed
from the fd connection). So XPending() call is necessary; which
additionally ensures the output queue is flushed before polling.
The second poll() seems to have been just introduced as a result
of failing to understand this, and the strange XPending() nesting
later is no longer needed either.
diff --git a/vcl/unx/source/dtrans/X11_selection.cxx b/vcl/unx/source/dtrans/X11_selection.cxx
index 5a27af6..dda0aeb 100644
--- a/vcl/unx/source/dtrans/X11_selection.cxx
+++ b/vcl/unx/source/dtrans/X11_selection.cxx
@@ -3729,41 +3729,29 @@ bool SelectionManager::handleXEvent( XEvent& rEvent )
void SelectionManager::dispatchEvent( int millisec )
{
- pollfd aPollFD;
- XEvent event;
-
- // query socket handle to poll on
- aPollFD.fd = ConnectionNumber( m_pDisplay );
- aPollFD.events = POLLIN;
- aPollFD.revents = 0;
+ // acquire the mutex to prevent other threads
+ // from using the same X connection
+ osl::ResettableMutexGuard aGuard(m_aMutex);
- // wait for activity (outside the xlib)
- if( poll( &aPollFD, 1, millisec ) > 0 )
+ if( !XPending( m_pDisplay ))
+ { // wait for any events if none are already queued
+ pollfd aPollFD;
+ aPollFD.fd = XConnectionNumber( m_pDisplay );
+ aPollFD.events = POLLIN;
+ aPollFD.revents = 0;
+ // release mutex for the time of waiting for possible data
+ aGuard.clear();
+ if( poll( &aPollFD, 1, millisec ) <= 0 )
+ return;
+ aGuard.reset();
+ }
+ while( XPending( m_pDisplay ))
{
- // now acquire the mutex to prevent other threads
- // from using the same X connection
- osl::ResettableMutexGuard aGuard(m_aMutex);
-
- // prevent that another thread already ate the input
- // this can happen if e.g. another thread does
- // an X request getting a response. the response
- // would be removed from the queue and we would end up
- // with an empty socket here
- if( poll( &aPollFD, 1, 0 ) > 0 )
- {
- int nPending = 1;
- while( nPending )
- {
- nPending = XPending( m_pDisplay );
- if( nPending )
- {
- XNextEvent( m_pDisplay, &event );
- aGuard.clear();
- handleXEvent( event );
- aGuard.reset();
- }
- }
- }
+ XEvent event;
+ XNextEvent( m_pDisplay, &event );
+ aGuard.clear();
+ handleXEvent( event );
+ aGuard.reset();
}
}
commit 0944075553e0164a7cef09eaa35bafdffcc8ede8
Merge: 8d66230... a7febbd...
Author: Petr Mladek <pmladek at suse.cz>
Date: Tue Apr 5 19:07:05 2011 +0200
Merge remote-tracking branch 'origin/libreoffice-3-3' into libreoffice-3-4
Conflicts:
svtools/source/control/toolbarmenu.cxx
vcl/inc/vcl/gdimtf.hxx
vcl/inc/vcl/settings.hxx
vcl/unx/inc/saldata.hxx
vcl/unx/kde4/KDESalGraphics.cxx
diff --cc unotools/source/config/configmgr.cxx
index 795a1b1,fa94533..70c2448
--- a/unotools/source/config/configmgr.cxx
+++ b/unotools/source/config/configmgr.cxx
@@@ -379,9 -403,9 +379,9 @@@ Any ConfigManager::GetDirectConfigPrope
::rtl::OUString sBrandName;
#ifdef ENABLE_BROFFICE
- LanguageType nType = MsLangId::getSystemUILanguage();
+ LanguageType nType = MsLangId::getRealLanguage( LANGUAGE_NONE );
if ( nType == LANGUAGE_PORTUGUESE_BRAZILIAN )
- sBrandName = OUString::createFromAscii("BrOffice");
+ sBrandName = OUString(RTL_CONSTASCII_USTRINGPARAM("BrOffice"));
else
#endif
sBrandName = BrandName::get();
diff --cc vcl/source/gdi/gdimtf.cxx
index 5c787bb,8202bf1..4809b1f
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@@ -435,10 -435,10 +435,12 @@@ void GDIMetaFile::Play( GDIMetaFile& rM
if ( !bRecord && !rMtf.bRecord )
{
MetaAction* pAction = GetCurAction();
- const ULONG nObjCount = Count();
+ const sal_uLong nObjCount = Count();
+
+ rMtf.UseCanvas( rMtf.GetUseCanvas() || bUseCanvas );
+ rMtf.UseCanvas( rMtf.GetUseCanvas() || bUseCanvas );
+
if( nPos > nObjCount )
nPos = nObjCount;
diff --cc vcl/unx/kde4/KDESalGraphics.cxx
index 3b9a13c,925696a..6cf466d
--- a/vcl/unx/kde4/KDESalGraphics.cxx
+++ b/vcl/unx/kde4/KDESalGraphics.cxx
@@@ -432,7 -354,9 +432,9 @@@ sal_Bool KDESalGraphics::drawNativeCont
{ // reduce paint area only to the handle area
const int width = kapp->style()->pixelMetric(QStyle::PM_ToolBarHandleExtent);
QRect rect( 0, 0, width, widgetRect.height());
- pTempClipRegion = XCreateRegion();
+ clipRegion = new QRegion( widgetRect.x(), widgetRect.y(), width, widgetRect.height());
+ XRectangle xRect = { widgetRect.x(), widgetRect.y(), width, widgetRect.height() };
+ XUnionRectWithRegion( &xRect, pTempClipRegion, pTempClipRegion );
QStyleOption option;
option.state = QStyle::State_Horizontal;
diff --cc vcl/unx/kde4/KDEXLib.cxx
index ca435c8,1bca18e..7757014
--- a/vcl/unx/kde4/KDEXLib.cxx
+++ b/vcl/unx/kde4/KDEXLib.cxx
@@@ -202,20 -204,14 +202,30 @@@ void KDEXLib::Init(
static GPollFunc old_gpoll = NULL;
static gint gpoll_wrapper( GPollFD*, guint, gint );
#endif
+#ifdef QT_UNIX_EVENT_LOOP_SUPPORT
+static int (*qt_select)(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept,
+ const struct timeval *orig_timeout);
+static int lo_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept,
+ const struct timeval *orig_timeout);
+#endif
+
+static bool ( *old_qt_event_filter )( void* );
+static bool qt_event_filter( void* m )
+{
+ if( old_qt_event_filter != NULL && old_qt_event_filter( m ))
+ return true;
+ if( SalKDEDisplay::self() && SalKDEDisplay::self()->checkDirectInputEvent( static_cast< XEvent* >( m )))
+ return true;
++ return false;
++}
+
+ static bool ( *old_qt_event_filter )( void* );
+ static bool qt_event_filter( void* m )
+ {
+ if( old_qt_event_filter != NULL && old_qt_event_filter( m ))
+ return true;
+ if( SalKDEDisplay::self() && SalKDEDisplay::self()->checkDirectInputEvent( static_cast< XEvent* >( m )))
+ return true;
return false;
}
commit a7febbdcdc9fd4a80e8357f3812456fc3fa0f39f
Author: Radek Doulik <rodo at novell.com>
Date: Thu Mar 10 15:47:35 2011 +0100
fix for 3.3.2 blocker fdo#34718 - change the type of nDrawerHeight to long
- before it became big positive long in the called Point::Move
function, moving the drawer under the visible area. so it was
basically signed/unsigned problem in the layouter
diff --git a/svtools/source/toolpanel/drawerlayouter.cxx b/svtools/source/toolpanel/drawerlayouter.cxx
index df056d9..89354e2 100644
--- a/svtools/source/toolpanel/drawerlayouter.cxx
+++ b/svtools/source/toolpanel/drawerlayouter.cxx
@@ -88,7 +88,7 @@ namespace svt
const size_t nUpperBound = !!aActivePanel ? *aActivePanel : nPanelCount - 1;
for ( size_t i=0; i<=nUpperBound; ++i )
{
- sal_uInt32 nDrawerHeight = m_aDrawers[i]->GetPreferredHeightPixel();
+ long nDrawerHeight = m_aDrawers[i]->GetPreferredHeightPixel();
m_aDrawers[i]->SetPosSizePixel(
aUpperDrawerPos, Size( nWidth, nDrawerHeight ) );
aUpperDrawerPos.Move( 0, nDrawerHeight );
@@ -98,7 +98,7 @@ namespace svt
Point aLowerDrawerPos( i_rDeckPlayground.BottomLeft() );
for ( size_t j = nPanelCount - 1; j > nUpperBound; --j )
{
- sal_uInt32 nDrawerHeight = m_aDrawers[j]->GetPreferredHeightPixel();
+ long nDrawerHeight = m_aDrawers[j]->GetPreferredHeightPixel();
m_aDrawers[j]->SetPosSizePixel(
Point( aLowerDrawerPos.X(), aLowerDrawerPos.Y() - nDrawerHeight + 1 ),
Size( nWidth, nDrawerHeight )
commit 8d66230f9a03c994842f3b5f313e0f68dd79ceec
Author: Robert Nagy <robert at openbsd.org>
Date: Tue Apr 5 11:59:42 2011 +0200
link to the correct libraries on *BSD too
diff --git a/padmin/Library_spa.mk b/padmin/Library_spa.mk
index 6827729..82b3e4e 100644
--- a/padmin/Library_spa.mk
+++ b/padmin/Library_spa.mk
@@ -62,12 +62,17 @@ $(eval $(call gb_Library_add_exception_objects,spa,\
padmin/source/titlectrl \
))
-ifeq ($(OS),LINUX)
+ifneq (,$(filter LINUX DRAGONFLY OPENBSD FREEBSD NETBSD, $(OS)))
$(eval $(call gb_Library_add_linked_libs,spa,\
- dl \
m \
pthread \
))
endif
+ifeq ($(OS),LINUX)
+$(eval $(call gb_Library_add_linked_libs,spa,\
+ dl \
+))
+endif
+
# vim: set noet sw=4 ts=4:
diff --git a/toolkit/Library_tk.mk b/toolkit/Library_tk.mk
index 15c8692..1a94bbd 100644
--- a/toolkit/Library_tk.mk
+++ b/toolkit/Library_tk.mk
@@ -163,7 +163,7 @@ $(eval $(call gb_Library_set_cxxflags,tk,\
$$(CXXFLAGS) $(gb_OBJCXXFLAGS)))
endif
-ifeq ($(OS),LINUX)
+ifneq (,$(filter LINUX DRAGONFLY OPENBSD FREEBSD NETBSD, $(OS)))
$(eval $(call gb_Library_add_linked_libs,tk,\
X11 \
))
commit 58ffad59de3f5c13db7678a0a0dd3edf72d381bc
Author: Robert Nagy <robert at openbsd.org>
Date: Mon Apr 4 15:55:58 2011 +0200
link to pthread on linux and *bsd
diff --git a/padmin/Executable_spadmin.bin.mk b/padmin/Executable_spadmin.bin.mk
index ac6f19c..5f958d4 100644
--- a/padmin/Executable_spadmin.bin.mk
+++ b/padmin/Executable_spadmin.bin.mk
@@ -59,10 +59,15 @@ $(eval $(call gb_Executable_add_exception_objects,spadmin.bin,\
padmin/source/pamain \
))
+ifneq (,$(filter LINUX DRAGONFLY OPENBSD FREEBSD NETBSD, $(OS)))
+$(eval $(call gb_Executable_add_linked_libs,spadmin.bin,\
+ pthread \
+))
+endif
+
ifeq ($(OS),LINUX)
$(eval $(call gb_Executable_add_linked_libs,spadmin.bin,\
dl \
- pthread \
))
endif
commit 8b70d97797e27466154151bfd62cebf92571a6fe
Author: Michael Meeks <michael.meeks at novell.com>
Date: Fri Apr 1 22:25:11 2011 +0100
fix glyph fallback range crasher with negative nLevel
diff --git a/vcl/unx/source/gdi/salgdi3.cxx b/vcl/unx/source/gdi/salgdi3.cxx
index 4365356..3aa1824 100644
--- a/vcl/unx/source/gdi/salgdi3.cxx
+++ b/vcl/unx/source/gdi/salgdi3.cxx
@@ -1238,7 +1238,7 @@ X11SalGraphics::GetKernPairs( sal_uLong nPairs, ImplKernPairData *pKernPairs )
sal_Bool X11SalGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect )
{
int nLevel = nGlyphIndex >> GF_FONTSHIFT;
- if( nLevel >= MAX_FALLBACK )
+ if( nLevel < 0 || nLevel >= MAX_FALLBACK )
return sal_False;
ServerFont* pSF = mpServerFont[ nLevel ];
commit a57c528adb14a9a2ef4631d137e01ef0f7598905
Author: Petr Mladek <pmladek at suse.cz>
Date: Fri Apr 1 15:13:16 2011 +0200
Branch libreoffice-3-4
This is 'libreoffice-3-4' - the stable branch for the 3.4.x releases
+ only bug fixes are allowed
+ no approval needed during beta phase (two weeks after branch)
+ 1 approval needed during rc phase and for bugfix releases
+ 2 approvals with different/no affiliation needed for late features
+ regularly merged into master by a selected person when living
Please watch http://wiki.documentfoundation.org/ReleasePlan
and read announces on libreoffice at lists.freedesktop.org
If you want to build something cool, unstable, and risky, use master.
commit 9c59688b152ed2c4d46f9bd588c91a01247f6aeb
Author: Petr Mladek <pmladek at suse.cz>
Date: Tue Mar 8 15:31:13 2011 +0100
Version 3.3.2.1, tag libreoffice-3.3.2.1 (3.3.2-rc1)
commit f836140555c905f85464e6a0e355171231e81054
Author: LuboÅ¡ LuÅák <l.lunak at suse.cz>
Date: Tue Feb 22 16:31:11 2011 +0100
try to work around IM problems with KDE4 integration (bnc#665112)
See comment for SalKDEDisplay::checkDirectInputEvent(). This was
introduced when switching to using Qt event loop, Qt processes
IM handling before LO gets a chance to do something and this conflicts.
This is rather hackish but I have no better idea and as long as
the IM protocol does not change it should be fine.
ACK by Petr Mladek.
diff --git a/vcl/unx/kde4/KDESalDisplay.cxx b/vcl/unx/kde4/KDESalDisplay.cxx
index b1eb0d6..2524295 100644
--- a/vcl/unx/kde4/KDESalDisplay.cxx
+++ b/vcl/unx/kde4/KDESalDisplay.cxx
@@ -41,6 +41,7 @@ SalKDEDisplay::SalKDEDisplay( Display* pDisp )
{
assert( selfptr == NULL );
selfptr = this;
+ xim_protocol = XInternAtom( pDisp_, "_XIM_PROTOCOL", False );
}
SalKDEDisplay::~SalKDEDisplay()
@@ -65,7 +66,32 @@ void SalKDEDisplay::Yield()
XEvent event;
XNextEvent( pDisp_, &event );
+ if( checkDirectInputEvent( &event ))
+ return;
qApp->x11ProcessEvent( &event );
}
+// HACK: When using Qt event loop, input methods (japanese, etc.) will get broken because
+// of XFilterEvent() getting called twice, once by Qt, once by LO (bnc#665112).
+// This function is therefore called before any XEvent is passed to Qt event handling
+// and if it is a keyboard event and no Qt widget is the active window (i.e. we are
+// processing events for some LO window), then feed the event only to LO directly and skip Qt
+// completely. Skipped events are KeyPress, KeyRelease and also _XIM_PROTOCOL client message
+// (seems to be necessary too, hopefully there are not other internal XIM messages that
+// would need this handling).
+bool SalKDEDisplay::checkDirectInputEvent( XEvent* ev )
+{
+ if( ev->xany.type == XLIB_KeyPress || ev->xany.type == KeyRelease
+ || ( ev->xany.type == ClientMessage && ev->xclient.message_type == xim_protocol ))
+ {
+ if( qApp->activeWindow() == NULL )
+ {
+ Dispatch(ev);
+ return true;
+ }
+ }
+ return false;
+}
+
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kde4/KDESalDisplay.hxx b/vcl/unx/kde4/KDESalDisplay.hxx
index 1a79c86..25a8b9f 100644
--- a/vcl/unx/kde4/KDESalDisplay.hxx
+++ b/vcl/unx/kde4/KDESalDisplay.hxx
@@ -41,7 +41,9 @@ class SalKDEDisplay : public SalX11Display
inline void EventGuardRelease() { osl_releaseMutex( hEventGuard_ ); }
// virtual long Dispatch( XEvent *event );
virtual void Yield();
+ bool checkDirectInputEvent( XEvent* ev );
private:
+ Atom xim_protocol;
static SalKDEDisplay* selfptr;
};
diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx
index 1084ba2..1bca18e 100644
--- a/vcl/unx/kde4/KDEXLib.cxx
+++ b/vcl/unx/kde4/KDEXLib.cxx
@@ -205,8 +205,19 @@ static GPollFunc old_gpoll = NULL;
static gint gpoll_wrapper( GPollFD*, guint, gint );
#endif
+static bool ( *old_qt_event_filter )( void* );
+static bool qt_event_filter( void* m )
+{
+ if( old_qt_event_filter != NULL && old_qt_event_filter( m ))
+ return true;
+ if( SalKDEDisplay::self() && SalKDEDisplay::self()->checkDirectInputEvent( static_cast< XEvent* >( m )))
+ return true;
+ return false;
+}
+
void KDEXLib::setupEventLoop()
{
+ old_qt_event_filter = QAbstractEventDispatcher::instance()->setEventFilter( qt_event_filter );
#ifdef GLIB_EVENT_LOOP_SUPPORT
// Glib is simple, it has g_main_context_set_poll_func() for wrapping the sleep call.
// The catch is that Qt has a bug that allows triggering timers even when they should
commit 18a79a536aa38479517b1fd29eaf5e15da05d8dd
Author: Michael Meeks <michael.meeks at novell.com>
Date: Tue Feb 22 12:05:55 2011 +0000
fix fdo#32640 - un-necessary reverse lookup on startup
Signed-off-by: Jan Holesovsky <kendy at suse.cz>
diff --git a/vcl/unx/inc/saldata.hxx b/vcl/unx/inc/saldata.hxx
index 4164a0f..83a8ce7 100644
--- a/vcl/unx/inc/saldata.hxx
+++ b/vcl/unx/inc/saldata.hxx
@@ -87,9 +87,8 @@ public:
void StartTimer( ULONG nMS );
inline void StopTimer();
void Timeout() const;
-
- const rtl::OUString& GetLocalHostName() const
- { return maLocalHostName; }
+
+ const rtl::OUString& GetLocalHostName();
static int XErrorHdl( Display*, XErrorEvent* );
static int XIOErrorHdl( Display* );
diff --git a/vcl/unx/source/app/saldata.cxx b/vcl/unx/source/app/saldata.cxx
index bfe96f7..3840844 100644
--- a/vcl/unx/source/app/saldata.cxx
+++ b/vcl/unx/source/app/saldata.cxx
@@ -272,7 +272,13 @@ X11SalData::X11SalData()
m_pPlugin = NULL;
hMainThread_ = pthread_self();
- osl_getLocalHostname( &maLocalHostName.pData );
+}
+
+const rtl::OUString& X11SalData::GetLocalHostName()
+{
+ if (!maLocalHostName.getLength())
+ osl_getLocalHostname( &maLocalHostName.pData );
+ return maLocalHostName;
}
X11SalData::~X11SalData()
commit faf02acc88bc4d7ead617e8e4999ac717bbce31b
Author: Radek Doulik <rodo at novell.com>
Date: Thu Feb 17 15:55:19 2011 +0100
fix cairo canvas edge count calculation
(cherry picked from commit abb5233c0b9b584407b4696f5db2c330ca45b632)
Signed-off-by: Thorsten Behrens <tbehrens at novell.com>
diff --git a/canvas/source/cairo/cairo_canvashelper.cxx b/canvas/source/cairo/cairo_canvashelper.cxx
index bb5f6be..29cf38e 100644
--- a/canvas/source/cairo/cairo_canvashelper.cxx
+++ b/canvas/source/cairo/cairo_canvashelper.cxx
@@ -1065,7 +1065,7 @@ namespace cairocanvas
if(nPointCount)
{
- const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount + 1: nPointCount);
+ const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount: nPointCount - 1);
basegfx::B2DPolygon aEdge;
aEdge.append(aCandidate.getB2DPoint(0));
aEdge.append(basegfx::B2DPoint(0.0, 0.0));
commit 74b3688c6a388f077f6dd01dffee63bb872cce5c
Author: Radek Doulik <rodo at novell.com>
Date: Wed Feb 16 18:12:33 2011 +0100
fix cairo canvas regression - do not access polygon points outside range
(cherry picked from commit a898a8cb077c05b1085da8254e66f61aa265b7dc)
Signed-off-by: Thorsten Behrens <tbehrens at novell.com>
diff --git a/canvas/source/cairo/cairo_canvashelper.cxx b/canvas/source/cairo/cairo_canvashelper.cxx
index 0294780..bb5f6be 100644
--- a/canvas/source/cairo/cairo_canvashelper.cxx
+++ b/canvas/source/cairo/cairo_canvashelper.cxx
@@ -1074,7 +1074,7 @@ namespace cairocanvas
{
const sal_uInt32 nNextIndex((b + 1) % nPointCount);
aEdge.setB2DPoint(1, aCandidate.getB2DPoint(nNextIndex));
- aEdge.setNextControlPoint(0, aCandidate.getNextControlPoint(b));
+ aEdge.setNextControlPoint(0, aCandidate.getNextControlPoint(b % nPointCount));
aEdge.setPrevControlPoint(1, aCandidate.getPrevControlPoint(nNextIndex));
doPolyPolygonImplementation( basegfx::B2DPolyPolygon(aEdge),
commit 104c373f43f494e059a040c323ea7e2f1b879d7c
Author: Radek Doulik <rodo at novell.com>
Date: Tue Feb 15 17:26:00 2011 +0100
GDIMetaFile::bUseCanvas related changes (prerequisite for fixing n#650049)
- add GetUseCanvas() for read access
- update bUseCanvas when playing on metafile
diff --git a/vcl/inc/vcl/gdimtf.hxx b/vcl/inc/vcl/gdimtf.hxx
index 14cc127..4bf3d46 100644
--- a/vcl/inc/vcl/gdimtf.hxx
+++ b/vcl/inc/vcl/gdimtf.hxx
@@ -247,6 +247,7 @@ public:
BOOL CreateThumbnail( sal_uInt32 nMaximumExtent, BitmapEx& rBmpEx, const BitmapEx* pOverlay = NULL, const Rectangle* pOverlayRect = NULL ) const;
void UseCanvas( BOOL _bUseCanvas );
+ BOOL GetUseCanvas() const { return bUseCanvas; }
};
/** Create a special metaaction that delegates rendering to specified
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index 2c116fa..8202bf1 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -437,6 +437,8 @@ void GDIMetaFile::Play( GDIMetaFile& rMtf, ULONG nPos )
MetaAction* pAction = GetCurAction();
const ULONG nObjCount = Count();
+ rMtf.UseCanvas( rMtf.GetUseCanvas() || bUseCanvas );
+
if( nPos > nObjCount )
nPos = nObjCount;
commit dc42647b0dcce34d9c7d23758fb28741aae8eb00
Author: Michael Meeks <michael.meeks at novell.com>
Date: Tue Feb 15 12:46:06 2011 +0000
disable EMF+ rendering on windows - it doesn't work yet
diff --git a/svtools/source/filter.vcl/wmf/enhwmf.cxx b/svtools/source/filter.vcl/wmf/enhwmf.cxx
index cc50b1b..1dd5c64 100644
--- a/svtools/source/filter.vcl/wmf/enhwmf.cxx
+++ b/svtools/source/filter.vcl/wmf/enhwmf.cxx
@@ -348,7 +348,7 @@ BOOL EnhWMFReader::ReadEnhWMF()
static sal_Bool bEnableEMFPlus = ( getenv( "EMF_PLUS_DISABLE" ) == NULL );
#else
// TODO: make it possible to disable emf+ on windows
- static sal_Bool bEnableEMFPlus = sal_True;
+ static sal_Bool bEnableEMFPlus = sal_False;
#endif
while( bStatus && nRecordCount-- )
commit 5715b3d4200b8d307243a82fdadd898877f5bd63
Author: Michael Meeks <michael.meeks at novell.com>
Date: Thu Feb 10 17:34:10 2011 +0000
catch exceptions from failing UNO-ness, fdo#33785 backstop.
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index dabeeaf..2c116fa 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -512,7 +512,10 @@ bool GDIMetaFile::ImplPlayWithRenderer( OutputDevice* pOut, const Point& rPos, S
if (!win)
win = Application::GetFirstTopLevelWindow();
- if (win) {
+ if (!win)
+ return false;
+
+ try {
const uno::Reference<rendering::XCanvas>& xCanvas = win->GetCanvas ();
Size aSize (rDestSize.Width () + 1, rDestSize.Height () + 1);
const uno::Reference<rendering::XBitmap>& xBitmap = xCanvas->getDevice ()->createCompatibleAlphaBitmap (vcl::unotools::integerSize2DFromSize( aSize));
@@ -566,6 +569,10 @@ bool GDIMetaFile::ImplPlayWithRenderer( OutputDevice* pOut, const Point& rPos, S
}
}
}
+ } catch( uno::RuntimeException& ) {
+ throw; // runtime errors are fatal
+ } catch( uno::Exception& ) {
+ // ignore errors, no way of reporting them here
}
return false;
commit 29b510e2a77f65445831767fe2061a92b6b57279
Author: Petr Mladek <pmladek at suse.cz>
Date: Fri Feb 11 22:36:09 2011 +0100
use "BrOffice" name if the Brazilian UI translation is used (bnc#33744)
it is not enough to check the system UI setting
Signed off by Michael Meeks
diff --git a/unotools/source/config/configmgr.cxx b/unotools/source/config/configmgr.cxx
index 7b57234..fa94533 100644
--- a/unotools/source/config/configmgr.cxx
+++ b/unotools/source/config/configmgr.cxx
@@ -403,7 +403,7 @@ Any ConfigManager::GetDirectConfigProperty(ConfigProperty eProp)
::rtl::OUString sBrandName;
#ifdef ENABLE_BROFFICE
- LanguageType nType = MsLangId::getSystemUILanguage();
+ LanguageType nType = MsLangId::getRealLanguage( LANGUAGE_NONE );
if ( nType == LANGUAGE_PORTUGUESE_BRAZILIAN )
sBrandName = OUString::createFromAscii("BrOffice");
else
commit 3b8c4baec540c851ebf97d933e11150192defa87
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date: Thu Feb 10 19:21:37 2011 +0900
GetEnglishSearchFontName() searches Takao fonts
Signed-off-by: Kohei Yoshida <kyoshida at novell.com>
diff --git a/unotools/source/misc/fontdefs.cxx b/unotools/source/misc/fontdefs.cxx
index e216348..4e0b812 100644
--- a/unotools/source/misc/fontdefs.cxx
+++ b/unotools/source/misc/fontdefs.cxx
@@ -91,6 +91,10 @@ static sal_Unicode const aIPAPMincho[] = { 'i', 'p', 'a', 'p', 0x660E, 0x671D, 0
static sal_Unicode const aIPAGothic[] = { 'i', 'p', 'a', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 };
static sal_Unicode const aIPAPGothic[] = { 'i', 'p', 'a', 'p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 };
static sal_Unicode const aIPAUIGothic[] = { 'i', 'p', 'a', 'u', 'i', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 };
+static sal_Unicode const aTakaoMincho[] = { 't', 'a', 'k', 'a', 'o', 0x660E, 0x671D, 0 };
+static sal_Unicode const aTakaoPMincho[] = { 't', 'a', 'k', 'a', 'o', 'p', 0x660E, 0x671D, 0 };
+static sal_Unicode const aTakaoGothic[] = { 't', 'a', 'k', 'a', 'o', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 };
+static sal_Unicode const aTakaoPGothic[] = { 't', 'a', 'k', 'a', 'o', 'p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0 };
static sal_Unicode const aSazanamiMincho[] = { 0x3055, 0x3056, 0x306A, 0x307F, 0x660E, 0x671D, 0, 0 };
static sal_Unicode const aSazanamiGothic[] = { 0x3055, 0x3056, 0x306A, 0x307F, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 };
static sal_Unicode const aKochiMincho[] = { 0x6771, 0x98A8, 0x660E, 0x671D, 0, 0 };
@@ -236,6 +240,10 @@ static ImplLocalizedFontName aImplLocalizedNamesList[] =
{ "ipagothic", aIPAGothic },
{ "ipapgothic", aIPAPGothic },
{ "ipauigothic", aIPAUIGothic },
+{ "takaomincho", aTakaoMincho },
+{ "takaopmincho", aTakaoPMincho },
+{ "takaogothic", aTakaoGothic },
+{ "takaopgothic", aTakaoPGothic },
{ "sazanamimincho", aSazanamiMincho },
{ "sazanamigothic", aSazanamiGothic },
{ "kochimincho", aKochiMincho },
commit 071354e24035aa359b416b17dcd53b6ae8e17f87
Author: Cédric Bosdonnat <cedricbosdo at openoffice.org>
Date: Mon Feb 7 13:02:26 2011 +0100
Fixed size computation for toolbar menus with controls
(cherry picked from commit 8fc079ad197755ecb6191181de79fb60a6f6ae86)
Signed-off-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/svtools/source/control/toolbarmenu.cxx b/svtools/source/control/toolbarmenu.cxx
index 1ac3b9d..e86644a 100644
--- a/svtools/source/control/toolbarmenu.cxx
+++ b/svtools/source/control/toolbarmenu.cxx
@@ -653,6 +653,51 @@ void ToolbarMenu::initWindow()
// --------------------------------------------------------------------
+static long ImplGetNativeCheckAndRadioSize( Window* pWin, long& rCheckHeight, long& rRadioHeight, long &rMaxWidth )
+{
+ rMaxWidth = rCheckHeight = rRadioHeight = 0;
+
+ ImplControlValue aVal;
+ Rectangle aNativeBounds;
+ Rectangle aNativeContent;
+ Point tmp( 0, 0 );
+ Rectangle aCtrlRegion( tmp, Size( 100, 15 ) );
+ if( pWin->IsNativeControlSupported( CTRL_MENU_POPUP, PART_MENU_ITEM_CHECK_MARK ) )
+ {
+ if( pWin->GetNativeControlRegion( ControlType(CTRL_MENU_POPUP),
+ ControlPart(PART_MENU_ITEM_CHECK_MARK),
+ aCtrlRegion,
+ ControlState(CTRL_STATE_ENABLED),
+ aVal,
+ OUString(),
+ aNativeBounds,
+ aNativeContent )
+ )
+ {
+ rCheckHeight = aNativeBounds.GetHeight();
+ rMaxWidth = aNativeContent.GetWidth();
+ }
+ }
+ if( pWin->IsNativeControlSupported( CTRL_MENU_POPUP, PART_MENU_ITEM_RADIO_MARK ) )
+ {
+ if( pWin->GetNativeControlRegion( ControlType(CTRL_MENU_POPUP),
+ ControlPart(PART_MENU_ITEM_RADIO_MARK),
+ aCtrlRegion,
+ ControlState(CTRL_STATE_ENABLED),
+ aVal,
+ OUString(),
+ aNativeBounds,
+ aNativeContent )
+ )
+ {
+ rRadioHeight = aNativeBounds.GetHeight();
+ rMaxWidth = Max (rMaxWidth, aNativeContent.GetWidth());
+ }
+ }
+ return (rCheckHeight > rRadioHeight) ? rCheckHeight : rRadioHeight;
+}
+
+
Size ToolbarMenu::implCalcSize()
{
const long nFontHeight = GetTextHeight();
@@ -724,6 +769,28 @@ Size ToolbarMenu::implCalcSize()
pEntry->maSize.Height() = aControlSize.Height() + 1;
}
+ if( pEntry->HasCheck() && !pEntry->mbHasImage )
+ {
+ if( this->IsNativeControlSupported( CTRL_MENU_POPUP,
+ (pEntry->mnBits & MIB_RADIOCHECK)
+ ? PART_MENU_ITEM_CHECK_MARK
+ : PART_MENU_ITEM_RADIO_MARK ) )
+ {
+ long nCheckHeight = 0, nRadioHeight = 0, nMaxCheckWidth = 0;
+ ImplGetNativeCheckAndRadioSize( this, nCheckHeight, nRadioHeight, nMaxCheckWidth );
+
+ long nCtrlHeight = (pEntry->mnBits & MIB_RADIOCHECK) ? nCheckHeight : nRadioHeight;
+ nMaxTextWidth += nCtrlHeight + 1;
+ }
+ else if( pEntry->mbChecked )
+ {
+ long nSymbolWidth = (nFontHeight*25)/40;
+ if ( pEntry->mnBits & MIB_RADIOCHECK )
+ nSymbolWidth = nFontHeight/2;
+
+ nMaxTextWidth += nSymbolWidth;
+ }
+ }
}
}
@@ -1330,50 +1397,6 @@ static void ImplPaintCheckBackground( Window* i_pWindow, const Rectangle& i_rRec
}
}
-static long ImplGetNativeCheckAndRadioSize( Window* pWin, long& rCheckHeight, long& rRadioHeight, long &rMaxWidth )
-{
- rMaxWidth = rCheckHeight = rRadioHeight = 0;
-
- ImplControlValue aVal;
- Rectangle aNativeBounds;
- Rectangle aNativeContent;
- Point tmp( 0, 0 );
- Rectangle aCtrlRegion( tmp, Size( 100, 15 ) );
- if( pWin->IsNativeControlSupported( CTRL_MENU_POPUP, PART_MENU_ITEM_CHECK_MARK ) )
- {
- if( pWin->GetNativeControlRegion( ControlType(CTRL_MENU_POPUP),
- ControlPart(PART_MENU_ITEM_CHECK_MARK),
- aCtrlRegion,
- ControlState(CTRL_STATE_ENABLED),
- aVal,
- OUString(),
- aNativeBounds,
- aNativeContent )
- )
- {
- rCheckHeight = aNativeBounds.GetHeight();
- rMaxWidth = aNativeContent.GetWidth();
- }
- }
- if( pWin->IsNativeControlSupported( CTRL_MENU_POPUP, PART_MENU_ITEM_RADIO_MARK ) )
- {
- if( pWin->GetNativeControlRegion( ControlType(CTRL_MENU_POPUP),
- ControlPart(PART_MENU_ITEM_RADIO_MARK),
- aCtrlRegion,
- ControlState(CTRL_STATE_ENABLED),
- aVal,
- OUString(),
- aNativeBounds,
- aNativeContent )
- )
- {
- rRadioHeight = aNativeBounds.GetHeight();
- rMaxWidth = Max (rMaxWidth, aNativeContent.GetWidth());
- }
- }
- return (rCheckHeight > rRadioHeight) ? rCheckHeight : rRadioHeight;
-}
-
void ToolbarMenu::implPaint( ToolbarMenuEntry* pThisOnly, bool bHighlighted )
{
USHORT nBorder = 0; long nStartY = 0; // from Menu implementations, needed when we support native menu background & scrollable menu
commit 8dd029aa89f4e980442ddc0361c8831421190823
Author: LuboÅ¡ LuÅák <l.lunak at suse.cz>
Date: Thu Feb 10 12:12:28 2011 +0100
properly fix incorrect recent backport
ACK by Kendy
diff --git a/vcl/unx/kde4/KDESalGraphics.cxx b/vcl/unx/kde4/KDESalGraphics.cxx
index d3eb7e7..925696a 100644
--- a/vcl/unx/kde4/KDESalGraphics.cxx
+++ b/vcl/unx/kde4/KDESalGraphics.cxx
@@ -354,7 +354,9 @@ BOOL KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
{ // reduce paint area only to the handle area
const int width = kapp->style()->pixelMetric(QStyle::PM_ToolBarHandleExtent);
QRect rect( 0, 0, width, widgetRect.height());
- QRegion* clipRegion = new QRegion( widgetRect.x(), widgetRect.y(), width, widgetRect.height());
+ pTempClipRegion = XCreateRegion();
+ XRectangle xRect = { widgetRect.x(), widgetRect.y(), width, widgetRect.height() };
+ XUnionRectWithRegion( &xRect, pTempClipRegion, pTempClipRegion );
QStyleOption option;
option.state = QStyle::State_Horizontal;
commit 462b3d61e352189d3d4c71acb7f62f6919381fd1
Author: bjoern.michaelsen at canonical.com <Bjoern Michaelsen>
Date: Mon Feb 7 17:18:02 2011 +0100
lp#696527: enable human icon theme in LibreOffice
(cherry picked from commit 00b43fc0d82950e2abc57cca3746d395252bc9e0)
Signed-off-by: Thorsten Behrens <tbehrens at novell.com>
diff --git a/vcl/inc/vcl/settings.hxx b/vcl/inc/vcl/settings.hxx
index 30308b2..5fa547d 100644
--- a/vcl/inc/vcl/settings.hxx
+++ b/vcl/inc/vcl/settings.hxx
@@ -525,7 +525,8 @@ private:
#define STYLE_SYMBOLS_TANGO ((ULONG)5)
#define STYLE_SYMBOLS_OXYGEN ((ULONG)6)
#define STYLE_SYMBOLS_CLASSIC ((ULONG)7)
-#define STYLE_SYMBOLS_THEMES_MAX ((ULONG)8)
+#define STYLE_SYMBOLS_HUMAN ((ULONG)8)
+#define STYLE_SYMBOLS_THEMES_MAX ((ULONG)9)
#define STYLE_MENUIMAGES_OFF ((USHORT)0)
#define STYLE_MENUIMAGES_ON ((USHORT)1)
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 20adcc8..ddcaf0d 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -712,6 +712,7 @@ void StyleSettings::Set3DColors( const Color& rColor )
case STYLE_SYMBOLS_TANGO: return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("tango"));
case STYLE_SYMBOLS_OXYGEN: return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("oxygen"));
case STYLE_SYMBOLS_CLASSIC: return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("classic"));
+ case STYLE_SYMBOLS_HUMAN: return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("human"));
}
return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("auto"));
@@ -735,6 +736,8 @@ ULONG StyleSettings::ImplNameToSymbolsStyle( const ::rtl::OUString &rName ) cons
return STYLE_SYMBOLS_OXYGEN;
else if ( rName == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("classic")) )
return STYLE_SYMBOLS_CLASSIC;
+ else if ( rName == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("human")) )
+ return STYLE_SYMBOLS_HUMAN;
return STYLE_SYMBOLS_AUTO;
}
More information about the Libreoffice-commits
mailing list