[Libreoffice-commits] .: 2 commits - solenv/bin vcl/inc vcl/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Wed Nov 14 05:18:33 PST 2012
solenv/bin/uilangfilter.xslt | 20 +++++++++++++++++---
vcl/inc/vcl/window.hxx | 18 +++++++++---------
vcl/source/window/brdwin.cxx | 31 ++++++++++++++++++++++++++-----
vcl/source/window/window2.cxx | 12 ++++++++++++
4 files changed, 64 insertions(+), 17 deletions(-)
New commits:
commit f23df687f6975e9ebd4545366fa6d7f76766918f
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Nov 14 13:02:29 2012 +0000
Resolves: fdo#57107 processing translatable child nodes twice
I'm rubbish with xslt.
Change-Id: Idc92a602aca7dc2a96cf185b1904e1373435a8a9
diff --git a/solenv/bin/uilangfilter.xslt b/solenv/bin/uilangfilter.xslt
index 42d066f..90abf11 100644
--- a/solenv/bin/uilangfilter.xslt
+++ b/solenv/bin/uilangfilter.xslt
@@ -13,19 +13,33 @@
<xsl:template match="/">
<l><xsl:text>
</xsl:text>
- <xsl:apply-templates select="//*[*[not(self::col)]/@translatable='yes']" />
+ <!--
+ What I want to do here is to extract all nodes that are translatable
+ except the columns of list and tree stores
+ -->
+ <xsl:apply-templates select="//*[not(self::col)][@translatable='yes']" />
+ <!--
+ What I want to do here is to extract just the list and tree store
+ columns that that are translatable
+ -->
<xsl:apply-templates select="interface/object[data/row/col[@id='0'][@translatable='yes']]" />
</l>
</xsl:template>
-<xsl:template match="*/*[not(self::col)][@translatable]">
+<!--
+ Normal nodes
+-->
+<xsl:template match="*/*[not(self::col)][@translatable='yes']">
<xsl:text> </xsl:text>
<t r="string" g="{str:tokenize(../@id,':')[1]}" l="{@name}">
<xsl:copy-of select="text()" />
</t><xsl:text>
</xsl:text>
</xsl:template>
-<xsl:template match="col[@id='0']">
+<!--
+ Column nodes
+-->
+<xsl:template match="col[@id='0'][@translatable='yes']">
<xsl:text> </xsl:text>
<xsl:variable name="groupid" select="../../../@id"/>
<t r="stringlist" g="{str:tokenize($groupid,':')[1]}" l="{count(preceding::col[@id='0'][../../../@id=$groupid])}">
commit 18f08d180db8e821f5c39359e08c177bcfecb58b
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Nov 14 12:20:57 2012 +0000
Resolves: fdo#57090 visual glitches on MacOSX with borders + layout
We need to force a resync of the borders of a borderwindow onto
its client window when the borders change when layout is active,
otherwise we are doing out calculations using the old borders
and it all turns into a pile of junk
Change-Id: I7dbff0b30aad41779f0f295498af6a492ddf5430
diff --git a/vcl/inc/vcl/window.hxx b/vcl/inc/vcl/window.hxx
index 98bcdc4..9a96e7d 100644
--- a/vcl/inc/vcl/window.hxx
+++ b/vcl/inc/vcl/window.hxx
@@ -577,15 +577,6 @@ protected:
void CallEventListeners( sal_uLong nEvent, void* pData = NULL );
void FireVclEvent( VclSimpleEvent* pEvent );
- /*
- * Widgets call this to inform their owner container that the widget wants
- * to renegotiate its size. Should be called when a widget has a new size
- * request. e.g. a FixedText Control gets a new label.
- *
- * akin to gtk_widget_queue_resize
- */
- SAL_DLLPRIVATE void queue_resize();
-
sal_Int32 get_height_request() const;
sal_Int32 get_width_request() const;
@@ -1077,6 +1068,15 @@ public:
virtual Size GetOptimalSize(WindowSizeType eType) const;
/*
+ * Widgets call this to inform their owner container that the widget wants
+ * to renegotiate its size. Should be called when a widget has a new size
+ * request. e.g. a FixedText Control gets a new label.
+ *
+ * akin to gtk_widget_queue_resize
+ */
+ void queue_resize();
+
+ /*
* Sets the "width-request" property
*
* Override for width request of the widget, or -1 if natural request
diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
index 8f7ea25..5de8938 100644
--- a/vcl/source/window/brdwin.cxx
+++ b/vcl/source/window/brdwin.cxx
@@ -1077,6 +1077,18 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
mnHeight = nHeight;
mbNWFBorder = false;
+ Window *pWin = NULL, *pCtrl = NULL;
+ if (mpOutDev->GetOutDevType() == OUTDEV_WINDOW)
+ pWin = (Window*) mpOutDev;
+
+ if (pWin)
+ pCtrl = mpBorderWindow->GetWindow(WINDOW_CLIENT);
+
+ long nOrigLeftBorder = mnLeftBorder;
+ long nOrigTopBorder = mnTopBorder;
+ long nOrigRightBorder = mnRightBorder;
+ long nOrigBottomBorder = mnBottomBorder;
+
sal_uInt16 nBorderStyle = mpBorderWindow->GetBorderStyle();
if ( nBorderStyle & WINDOW_BORDER_NOBORDER )
{
@@ -1093,12 +1105,8 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
{
// for native widget drawing we must find out what
// control this border belongs to
- Window *pWin = NULL, *pCtrl = NULL;
- if( mpOutDev->GetOutDevType() == OUTDEV_WINDOW )
- pWin = (Window*) mpOutDev;
-
ControlType aCtrlType = 0;
- if( pWin && (pCtrl = mpBorderWindow->GetWindow( WINDOW_CLIENT )) != NULL )
+ if (pCtrl)
{
switch( pCtrl->GetType() )
{
@@ -1207,6 +1215,19 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
mnBottomBorder = aRect.Bottom()-aCalcRect.Bottom();
}
}
+
+ if (pCtrl)
+ {
+ //fdo#57090 If the borders have changed, then trigger a queue_resize on
+ //the bordered window, which will resync its borders at that point
+ if (nOrigLeftBorder != mnLeftBorder ||
+ nOrigTopBorder != mnTopBorder ||
+ nOrigRightBorder != mnRightBorder ||
+ nOrigBottomBorder != mnBottomBorder)
+ {
+ pCtrl->queue_resize();
+ }
+ }
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx
index f816d2a..be8c8ba 100644
--- a/vcl/source/window/window2.cxx
+++ b/vcl/source/window/window2.cxx
@@ -1746,6 +1746,8 @@ void Window::SetBackgroundBitmap( const BitmapEx& rBitmapEx )
//as dirty for the size remains unchanged, but layout changed circumstances
void Window::queue_resize()
{
+ bool bSomeoneCares = false;
+
Dialog *pDialog = NULL;
Window *pWindow = this;
@@ -1756,6 +1758,7 @@ void Window::queue_resize()
{
VclContainer *pContainer = static_cast<VclContainer*>(pWindow);
pContainer->markLayoutDirty();
+ bSomeoneCares = true;
}
else if (pWindow->GetType() == WINDOW_TABCONTROL)
{
@@ -1770,6 +1773,15 @@ void Window::queue_resize()
pWindow = pWindow->GetParent();
}
+ if (bSomeoneCares)
+ {
+ //fdo#57090 force a resync of the borders of the borderwindow onto this
+ //window in case they have changed
+ Window* pBorderWindow = ImplGetBorderWindow();
+ if (pBorderWindow)
+ pBorderWindow->Resize();
+ }
+
if (!pDialog || pDialog == this)
return;
pDialog->queue_layout();
More information about the Libreoffice-commits
mailing list