[Libreoffice-commits] core.git: Branch 'private/jmux/master+fixes' - 2 commits - .gitignore vcl/unx
Jan-Marek Glogowski
glogow at fbihome.de
Thu Feb 27 12:49:06 PST 2014
.gitignore | 8 ++++++++
vcl/unx/kde4/KDESalGraphics.cxx | 21 ++++-----------------
vcl/unx/kde4/KDESalInstance.cxx | 5 +++++
vcl/unx/kde4/KDESalInstance.hxx | 1 +
vcl/unx/kde4/KDEXLib.cxx | 26 +++++++++++++++++++++++++-
vcl/unx/kde4/KDEXLib.hxx | 5 ++++-
6 files changed, 47 insertions(+), 19 deletions(-)
New commits:
commit 99071043c11b754b41f202d318fc63339d0243c7
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date: Thu Feb 27 20:34:00 2014 +0000
KDE4: evaluate frameWidth in the Qt thread
QWidget::ensurePolished() uses events, which need to be processed in
the Qt thread. This happens when opening a document via Java UNO,
and no LO instance is already running. The Java UNO call is processed
in the main / Qt thread while loading happens in a second thread.
Actually getNativeControlRegion should not involve any drawing, but
KDE4 needs it to get the correct frame width.
Change-Id: I344d5089d958963c48a9a8a84bfa9fe8f092b75a
diff --git a/vcl/unx/kde4/KDESalGraphics.cxx b/vcl/unx/kde4/KDESalGraphics.cxx
index a41b0cd1..4fbe79b 100644
--- a/vcl/unx/kde4/KDESalGraphics.cxx
+++ b/vcl/unx/kde4/KDESalGraphics.cxx
@@ -31,10 +31,12 @@
#undef Region
#include "KDESalGraphics.hxx"
+#include "KDESalInstance.hxx"
#include <vcl/settings.hxx>
#include <vcl/decoview.hxx>
#include <rtl/ustrbuf.hxx>
+#include <unx/saldata.hxx>
using namespace ::rtl;
@@ -165,21 +167,6 @@ namespace
kapp->style()->drawComplexControl(element, option, &painter);
}
- int getFrameWidth()
- {
- static int s_nFrameWidth = -1;
- if( s_nFrameWidth < 0 )
- {
- // fill in a default
- QFrame aFrame( NULL );
- aFrame.setFrameRect( QRect(0, 0, 100, 30) );
- aFrame.setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
- aFrame.ensurePolished();
- s_nFrameWidth = aFrame.frameWidth();
- }
- return s_nFrameWidth;
- }
-
void lcl_drawFrame(QStyle::PrimitiveElement element, QImage* image, QStyle::State state)
{
#if ( QT_VERSION >= QT_VERSION_CHECK( 4, 5, 0 ) )
@@ -554,7 +541,7 @@ bool KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
vclStateValue2StateFlag(nControlState, value) );
// draw just the border, see http://qa.openoffice.org/issues/show_bug.cgi?id=107945
- int fw = getFrameWidth();
+ int fw = static_cast< KDESalInstance* >(GetSalData()->m_pInstance)->getFrameWidth();
clipRegion = new QRegion( QRegion( widgetRect ).subtracted( widgetRect.adjusted( fw, fw, -fw, -fw )));
}
else if (type == CTRL_WINDOW_BACKGROUND)
@@ -857,7 +844,7 @@ bool KDESalGraphics::getNativeControlRegion( ControlType type, ControlPart part,
{
if( part == PART_BORDER )
{
- int nFrameWidth = getFrameWidth();
+ int nFrameWidth = static_cast< KDESalInstance* >(GetSalData()->m_pInstance)->getFrameWidth();
sal_uInt16 nStyle = val.getNumericVal();
if( nStyle & FRAME_DRAW_NODRAW )
{
diff --git a/vcl/unx/kde4/KDESalInstance.cxx b/vcl/unx/kde4/KDESalInstance.cxx
index 224ac3a..9670172 100644
--- a/vcl/unx/kde4/KDESalInstance.cxx
+++ b/vcl/unx/kde4/KDESalInstance.cxx
@@ -38,4 +38,9 @@ uno::Reference< ui::dialogs::XFilePicker2 > KDESalInstance::createFilePicker(
static_cast<KDEXLib*>( mpXLib )->createFilePicker(xMSF) );
}
+int KDESalInstance::getFrameWidth()
+{
+ return static_cast<KDEXLib*>( mpXLib )->getFrameWidth();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kde4/KDESalInstance.hxx b/vcl/unx/kde4/KDESalInstance.hxx
index 3c07f52..f73af0d 100644
--- a/vcl/unx/kde4/KDESalInstance.hxx
+++ b/vcl/unx/kde4/KDESalInstance.hxx
@@ -36,6 +36,7 @@ class KDESalInstance : public X11SalInstance
virtual com::sun::star::uno::Reference< com::sun::star::ui::dialogs::XFilePicker2 >
createFilePicker( const com::sun::star::uno::Reference<
com::sun::star::uno::XComponentContext >& );
+ int getFrameWidth();
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx
index 2cf71e1..1f000d9 100644
--- a/vcl/unx/kde4/KDEXLib.cxx
+++ b/vcl/unx/kde4/KDEXLib.cxx
@@ -59,7 +59,7 @@ KDEXLib::KDEXLib() :
SalXLib(), m_bStartupDone(false), m_pApplication(0),
m_pFreeCmdLineArgs(0), m_pAppCmdLineArgs(0), m_nFakeCmdLineArgs( 0 ),
eventLoopType( LibreOfficeEventLoop ),
- m_bYieldFrozen( false )
+ m_bYieldFrozen( false ), m_frameWidth( -1 )
{
// the timers created here means they belong to the main thread
connect( &timeoutTimer, SIGNAL( timeout()), this, SLOT( timeoutActivated()));
@@ -82,6 +82,9 @@ KDEXLib::KDEXLib() :
this, SLOT( createFilePicker( const com::sun::star::uno::Reference<
com::sun::star::uno::XComponentContext >&) ),
Qt::BlockingQueuedConnection );
+
+ connect( this, SIGNAL( getFrameWidthSignal() ),
+ this, SLOT( getFrameWidth() ), Qt::BlockingQueuedConnection );
}
KDEXLib::~KDEXLib()
@@ -423,6 +426,27 @@ uno::Reference< ui::dialogs::XFilePicker2 > KDEXLib::createFilePicker(
return uno::Reference< ui::dialogs::XFilePicker2 >( new KDE4FilePicker( xMSF, this ) );
}
+#define Region QtXRegion
+#include <qframe.h>
+#undef Region
+
+int KDEXLib::getFrameWidth()
+{
+ if( m_frameWidth >= 0 )
+ return m_frameWidth;
+ if( qApp->thread() != QThread::currentThread()) {
+ SalYieldMutexReleaser aReleaser;
+ return Q_EMIT getFrameWidthSignal();
+ }
+
+ // fill in a default
+ QFrame aFrame( NULL );
+ aFrame.setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
+ aFrame.ensurePolished();
+ m_frameWidth = aFrame.frameWidth();
+ return m_frameWidth;
+}
+
#include "KDEXLib.moc"
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kde4/KDEXLib.hxx b/vcl/unx/kde4/KDEXLib.hxx
index d07b9f6..dd7f83f 100644
--- a/vcl/unx/kde4/KDEXLib.hxx
+++ b/vcl/unx/kde4/KDEXLib.hxx
@@ -53,6 +53,7 @@ class KDEXLib : public QObject, public SalXLib
QTimer userEventTimer;
enum { LibreOfficeEventLoop, GlibEventLoop, QtUnixEventLoop } eventLoopType;
bool m_bYieldFrozen;
+ int m_frameWidth;
private:
void setupEventLoop();
@@ -71,6 +72,7 @@ class KDEXLib : public QObject, public SalXLib
com::sun::star::uno::Reference< com::sun::star::ui::dialogs::XFilePicker2 >
createFilePickerSignal( const com::sun::star::uno::Reference<
com::sun::star::uno::XComponentContext >& );
+ int getFrameWidthSignal();
public:
KDEXLib();
@@ -89,9 +91,10 @@ class KDEXLib : public QObject, public SalXLib
void doStartup();
public Q_SLOTS:
- virtual com::sun::star::uno::Reference< com::sun::star::ui::dialogs::XFilePicker2 >
+ com::sun::star::uno::Reference< com::sun::star::ui::dialogs::XFilePicker2 >
createFilePicker( const com::sun::star::uno::Reference<
com::sun::star::uno::XComponentContext >& );
+ int getFrameWidth();
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit afb7c6b9610993ad62bf0fccf1bf5dec0818f075
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date: Thu Feb 27 20:31:00 2014 +0000
Git: ignore autogen, doxygen and gdb config files
Adds some additional files to .gitignore.
Change-Id: Ia5af298a91919fe00392282c0e5bb88fa2811a52
diff --git a/.gitignore b/.gitignore
index 3d9bc63..93031b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,6 +33,8 @@
/aclocal.m4
/autom4te.cache
/autogen.input
+/autogen.lastrun
+/autogen.lastrun.bak
/ChangeLog
/config.Build.log
/config.guess
@@ -95,3 +97,9 @@ xcuserdata
*.v11*
*.vcxproj*
*.opensdf
+
+# doxygen output
+/docs
+
+# gdb config
+/.gdbinit
More information about the Libreoffice-commits
mailing list