[Libreoffice-commits] core.git: 2 commits - include/vcl vcl/source vcl/unx writerfilter/source

Caolán McNamara caolanm at redhat.com
Fri Apr 24 08:46:36 PDT 2015


 include/vcl/salnativewidgets.hxx                      |   12 ++++
 vcl/source/control/edit.cxx                           |    5 +
 vcl/source/outdev/nativecontrols.cxx                  |   13 +++-
 vcl/source/window/brdwin.cxx                          |   22 +++++---
 vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx         |   21 +++++++
 writerfilter/source/ooxml/OOXMLFastContextHandler.cxx |   48 +++++++++---------
 writerfilter/source/ooxml/OOXMLFastContextHandler.hxx |   48 +++++++++---------
 7 files changed, 108 insertions(+), 61 deletions(-)

New commits:
commit cb4276278962c2cbd47d0685881fb2460bf31c70
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Apr 24 16:41:34 2015 +0100

    Related: rhbz#1215060 pass std::exceptions through
    
    Change-Id: Ifb3431a50f92b95dfc1e851f9584533271e69324

diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
index dc18eae..bb72811 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -197,7 +197,7 @@ throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 void OOXMLFastContextHandler::lcl_startFastElement
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     OOXMLFactory::getInstance()->startAction(this, Element);
     if( Element == (NMSP_dmlWordDr|XML_positionV) )
@@ -209,7 +209,7 @@ void OOXMLFastContextHandler::lcl_startFastElement
 
 void OOXMLFastContextHandler::lcl_endFastElement
 (Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     OOXMLFactory::getInstance()->endAction(this, Element);
 }
@@ -239,7 +239,7 @@ uno::Reference< xml::sax::XFastContextHandler >
  OOXMLFastContextHandler::lcl_createFastChildContext
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     return OOXMLFactory::getInstance()->createFastChildContext(this, Element);
 }
@@ -264,7 +264,7 @@ void SAL_CALL OOXMLFastContextHandler::characters
 
 void OOXMLFastContextHandler::lcl_characters
 (const OUString & rString)
-throw (uno::RuntimeException, xml::sax::SAXException)
+throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     if (!m_bDiscardChildren)
         OOXMLFactory::getInstance()->characters(this, rString);
@@ -949,7 +949,7 @@ OOXMLFastContextHandlerProperties::~OOXMLFastContextHandlerProperties()
 
 void OOXMLFastContextHandlerProperties::lcl_endFastElement
 (Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     endAction(Element);
 
@@ -1095,7 +1095,7 @@ OOXMLFastContextHandlerPropertyTable::~OOXMLFastContextHandlerPropertyTable()
 
 void OOXMLFastContextHandlerPropertyTable::lcl_endFastElement
 (Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     OOXMLPropertySet::Pointer_t pPropSet(mpPropertySet->clone());
     OOXMLTableImpl::ValuePointer_t pTmpVal
@@ -1136,7 +1136,7 @@ OOXMLValue::Pointer_t OOXMLFastContextHandlerValue::getValue() const
 
 void OOXMLFastContextHandlerValue::lcl_endFastElement
 (Token_t Element)
-throw (uno::RuntimeException, xml::sax::SAXException)
+throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     sendPropertyToParent();
 
@@ -1207,7 +1207,7 @@ OOXMLFastContextHandlerTable::createFastChildContext
 
 void OOXMLFastContextHandlerTable::lcl_endFastElement
 (Token_t /*Element*/)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     addCurrentChild();
 
@@ -1253,7 +1253,7 @@ OOXMLFastContextHandlerXNote::~OOXMLFastContextHandlerXNote()
 void OOXMLFastContextHandlerXNote::lcl_startFastElement
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     mbForwardEventsSaved = isForwardEvents();
 
@@ -1268,7 +1268,7 @@ void OOXMLFastContextHandlerXNote::lcl_startFastElement
 
 void OOXMLFastContextHandlerXNote::lcl_endFastElement
 (Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     endAction(Element);
 
@@ -1477,7 +1477,7 @@ OOXMLFastContextHandlerTextTable::~OOXMLFastContextHandlerTextTable()
 void OOXMLFastContextHandlerTextTable::lcl_startFastElement
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     mpParserState->startTable();
     mnTableDepth++;
@@ -1496,7 +1496,7 @@ void OOXMLFastContextHandlerTextTable::lcl_startFastElement
 
 void OOXMLFastContextHandlerTextTable::lcl_endFastElement
 (Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     endAction(Element);
 
@@ -1548,7 +1548,7 @@ OOXMLFastContextHandlerShape::~OOXMLFastContextHandlerShape()
 void OOXMLFastContextHandlerShape::lcl_startFastElement
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     startAction(Element);
 
@@ -1604,7 +1604,7 @@ void OOXMLFastContextHandlerShape::sendShape( Token_t Element )
 
 void OOXMLFastContextHandlerShape::lcl_endFastElement
 (Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     if (mrShapeContext.is())
     {
@@ -1633,7 +1633,7 @@ uno::Reference< xml::sax::XFastContextHandler >
 OOXMLFastContextHandlerShape::lcl_createFastChildContext
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     uno::Reference< xml::sax::XFastContextHandler > xContextHandler;
 
@@ -1705,7 +1705,7 @@ OOXMLFastContextHandlerShape::createUnknownChildContext
 
 void OOXMLFastContextHandlerShape::lcl_characters
 (const OUString & aChars)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     if (mrShapeContext.is())
         mrShapeContext->characters(aChars);
@@ -1797,7 +1797,7 @@ void OOXMLFastContextHandlerWrapper::addToken( Token_t Token )
 void OOXMLFastContextHandlerWrapper::lcl_startFastElement
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     if (mxContext.is())
         mxContext->startFastElement(Element, Attribs);
@@ -1805,7 +1805,7 @@ void OOXMLFastContextHandlerWrapper::lcl_startFastElement
 
 void OOXMLFastContextHandlerWrapper::lcl_endFastElement
 (Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     if (mxContext.is())
         mxContext->endFastElement(Element);
@@ -1815,7 +1815,7 @@ uno::Reference< xml::sax::XFastContextHandler >
 OOXMLFastContextHandlerWrapper::lcl_createFastChildContext
 (Token_t Element,
  const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     uno::Reference< xml::sax::XFastContextHandler > xResult;
 
@@ -1852,7 +1852,7 @@ OOXMLFastContextHandlerWrapper::lcl_createFastChildContext
 
 void OOXMLFastContextHandlerWrapper::lcl_characters
 (const OUString & aChars)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     if (mxContext.is())
         mxContext->characters(aChars);
@@ -1987,14 +1987,14 @@ OOXMLFastContextHandlerLinear::OOXMLFastContextHandlerLinear(OOXMLFastContextHan
 
 void OOXMLFastContextHandlerLinear::lcl_startFastElement(Token_t Element,
     const uno::Reference< xml::sax::XFastAttributeList >& Attribs)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     buffer.appendOpeningTag( Element, Attribs );
     ++depthCount;
 }
 
 void OOXMLFastContextHandlerLinear::lcl_endFastElement(Token_t Element)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     buffer.appendClosingTag( Element );
     if( --depthCount == 0 )
@@ -2004,7 +2004,7 @@ void OOXMLFastContextHandlerLinear::lcl_endFastElement(Token_t Element)
 uno::Reference< xml::sax::XFastContextHandler >
 OOXMLFastContextHandlerLinear::lcl_createFastChildContext(Token_t,
     const uno::Reference< xml::sax::XFastAttributeList >&)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     uno::Reference< xml::sax::XFastContextHandler > xContextHandler;
     xContextHandler.set( this );
@@ -2012,7 +2012,7 @@ OOXMLFastContextHandlerLinear::lcl_createFastChildContext(Token_t,
 }
 
 void OOXMLFastContextHandlerLinear::lcl_characters(const OUString& aChars)
-    throw (uno::RuntimeException, xml::sax::SAXException)
+    throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
 {
     buffer.appendCharacters( aChars );
 }
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
index d6e6933..a592dd1 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
@@ -216,16 +216,16 @@ protected:
     unsigned int mnTableDepth;
 
     virtual void lcl_startFastElement(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException);
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception);
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException);
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception);
 
     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > lcl_createFastChildContext(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException);
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception);
 
     virtual void lcl_characters(const OUString & aChars)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException);
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception);
 
     void startAction(Token_t Element);
     void endAction(Token_t Element);
@@ -301,7 +301,7 @@ protected:
     OOXMLPropertySet::Pointer_t mpPropertySet;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
     virtual void setParent(OOXMLFastContextHandler * pParent) SAL_OVERRIDE;
 
 private:
@@ -320,7 +320,7 @@ protected:
     OOXMLTableImpl mTable;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
  };
 
 class OOXMLFastContextHandlerValue :
@@ -335,7 +335,7 @@ public:
     virtual OOXMLValue::Pointer_t getValue() const SAL_OVERRIDE;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual std::string getType() const SAL_OVERRIDE { return "Value"; }
 
@@ -364,7 +364,7 @@ protected:
     css::uno::Reference<css::xml::sax::XFastContextHandler> mCurrentChild;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual ResourceEnum_t getResource() const SAL_OVERRIDE { return TABLE; }
 
@@ -391,10 +391,10 @@ private:
     sal_Int32 mnMyXNoteType;
 
     virtual void lcl_startFastElement(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual ResourceEnum_t getResource() const SAL_OVERRIDE { return STREAM; }
 };
@@ -440,10 +440,10 @@ public:
 
 protected:
     virtual void lcl_startFastElement(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 };
 
 class OOXMLFastContextHandlerShape: public OOXMLFastContextHandlerProperties
@@ -482,16 +482,16 @@ protected:
     ShapeContextRef mrShapeContext;
 
     virtual void lcl_startFastElement(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > lcl_createFastChildContext (Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual void lcl_characters(const OUString & aChars)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
 };
 
@@ -534,16 +534,16 @@ public:
 
 protected:
     virtual void lcl_startFastElement(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual void lcl_endFastElement(Token_t Element)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > lcl_createFastChildContext(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual void lcl_characters(const OUString & aChars)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual void setId(Id nId) SAL_OVERRIDE;
     virtual Id getId() const SAL_OVERRIDE;
@@ -593,15 +593,15 @@ protected:
     virtual void process() = 0;
 
     virtual void lcl_startFastElement(Token_t Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
-    virtual void lcl_endFastElement(Token_t Element) throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+    virtual void lcl_endFastElement(Token_t Element) throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > lcl_createFastChildContext(Token_t Element,
         const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs)
-        throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+        throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
-    virtual void lcl_characters(const OUString & aChars) throw (css::uno::RuntimeException, css::xml::sax::SAXException) SAL_OVERRIDE;
+    virtual void lcl_characters(const OUString & aChars) throw (css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE;
 
     // should be private, but not much point in making deep copies of it
     oox::formulaimport::XmlStreamBuilder buffer;
commit 7deac4656c53965125c9ec1ca6eb8fcc8d393afa
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Apr 24 14:59:03 2015 +0100

    gtk3: get the right height for Edit boxes
    
    smuggle the text height down to the native region calculation code instead of
    messing around with proxies
    
    Change-Id: I727ceddb5b431be82e6e5a725f9bca588e5b2046

diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx
index d473aea..1bee876 100644
--- a/include/vcl/salnativewidgets.hxx
+++ b/include/vcl/salnativewidgets.hxx
@@ -476,6 +476,18 @@ public:
     bool            mbSingleLine:1;
 };
 
+/*  EditBoxValue:
+ *
+ *  Value container for editbox specifying additional drawing hints
+ */
+class VCL_DLLPUBLIC EditBoxValue : public ImplControlValue
+{
+public:
+    EditBoxValue(long nTextHeight)
+        : ImplControlValue(CTRL_EDITBOX, BUTTONVALUE_DONTKNOW, nTextHeight)
+    {
+    }
+};
 
 #endif
 
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index 6c73742..c9e19db 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -2710,6 +2710,7 @@ void Edit::SetSubEdit( Edit* pEdit )
 Size Edit::CalcMinimumSizeForText(const OUString &rString) const
 {
     int eCtrlType = ImplGetNativeControlType();
+    auto nTextHeight = GetTextHeight();
 
     Size aSize;
     if (mnWidthInChars != -1)
@@ -2726,7 +2727,7 @@ Size Edit::CalcMinimumSizeForText(const OUString &rString) const
         else
             aString = rString;
 
-        aSize.Height() = GetTextHeight();
+        aSize.Height() = nTextHeight;
         aSize.Width() = GetTextWidth(aString);
         aSize.Width() += ImplGetExtraOffset() * 2;
 
@@ -2749,7 +2750,7 @@ Size Edit::CalcMinimumSizeForText(const OUString &rString) const
     aSize = CalcWindowSize( aSize );
 
     // ask NWF what if it has an opinion, too
-    ImplControlValue aControlValue;
+    EditBoxValue aControlValue(nTextHeight);
     Rectangle aRect( Point( 0, 0 ), aSize );
     Rectangle aContent, aBound;
     if( GetNativeControlRegion(
diff --git a/vcl/source/outdev/nativecontrols.cxx b/vcl/source/outdev/nativecontrols.cxx
index bfb0447..7a8e70f 100644
--- a/vcl/source/outdev/nativecontrols.cxx
+++ b/vcl/source/outdev/nativecontrols.cxx
@@ -247,9 +247,6 @@ static std::shared_ptr< ImplControlValue > TransformControlValue( const ImplCont
             aResult.reset( pNew );
         }
         break;
-    case CTRL_GENERIC:
-            aResult.reset( new ImplControlValue( rVal ) );
-            break;
     case CTRL_MENU_POPUP:
         {
             const MenupopupValue* pMVal = static_cast<const MenupopupValue*>(&rVal);
@@ -258,6 +255,16 @@ static std::shared_ptr< ImplControlValue > TransformControlValue( const ImplCont
             aResult.reset( pNew );
         }
         break;
+    case CTRL_EDITBOX:
+        {
+            auto nTextHeight = rDev.ImplLogicToDevicePixel(Rectangle(0, 0, 0, rVal.getNumericVal())).GetHeight();
+            EditBoxValue* pNew = new EditBoxValue(nTextHeight);
+            aResult.reset(pNew);
+        }
+        break;
+    case CTRL_GENERIC:
+        aResult.reset( new ImplControlValue( rVal ) );
+        break;
     default:
         OSL_FAIL( "unknown ImplControlValue type !" );
         break;
diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
index 5818d11..e4322e1 100644
--- a/vcl/source/window/brdwin.cxx
+++ b/vcl/source/window/brdwin.cxx
@@ -1040,6 +1040,7 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
             // for native widget drawing we must find out what
             // control this border belongs to
             ControlType aCtrlType = 0;
+            std::unique_ptr<ImplControlValue> xControlValue(new ImplControlValue());
             if (pCtrl)
             {
                 switch( pCtrl->GetType() )
@@ -1073,7 +1074,13 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
                     case WINDOW_SPINFIELD:
                     case WINDOW_CALCINPUTLINE:
                         mbNWFBorder = true;
-                        aCtrlType = (pCtrl->GetStyle() & WB_SPIN) ? CTRL_SPINBOX : CTRL_EDITBOX;
+                        if (pCtrl->GetStyle() & WB_SPIN)
+                            aCtrlType = CTRL_SPINBOX;
+                        else
+                        {
+                            aCtrlType = CTRL_EDITBOX;
+                            xControlValue.reset(new EditBoxValue(pWin->GetTextHeight()));
+                        }
                         break;
                     default:
                         break;
@@ -1081,12 +1088,11 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
             }
             if( mbNWFBorder )
             {
-                ImplControlValue aControlValue;
                 Rectangle aCtrlRegion( (const Point&)Point(), Size( mnWidth < 10 ? 10 : mnWidth, mnHeight < 10 ? 10 : mnHeight ) );
                 Rectangle aBounds( aCtrlRegion );
                 Rectangle aContent( aCtrlRegion );
                 if( pWin->GetNativeControlRegion( aCtrlType, PART_ENTIRE_CONTROL, aCtrlRegion,
-                                                  ControlState::ENABLED, aControlValue, OUString(),
+                                                  ControlState::ENABLED, *xControlValue, OUString(),
                                                   aBounds, aContent ) )
                 {
                     mnLeftBorder    = aContent.Left() - aBounds.Left();
@@ -1192,7 +1198,7 @@ void ImplSmallBorderWindowView::DrawWindow( sal_uInt16 nDrawFlags, OutputDevice*
 
     ControlType aCtrlType = 0;
     ControlPart aCtrlPart = PART_ENTIRE_CONTROL;
-
+    std::unique_ptr<ImplControlValue> xControlValue(new ImplControlValue());
     if( pWin && (pCtrl = mpBorderWindow->GetWindow( WINDOW_CLIENT )) != NULL )
     {
         switch( pCtrl->GetType() )
@@ -1213,7 +1219,10 @@ void ImplSmallBorderWindowView::DrawWindow( sal_uInt16 nDrawFlags, OutputDevice*
                 if( pCtrl->GetStyle() & WB_SPIN )
                     aCtrlType = CTRL_SPINBOX;
                 else
+                {
                     aCtrlType = CTRL_EDITBOX;
+                    xControlValue.reset(new EditBoxValue(pCtrl->GetTextHeight()));
+                }
                 break;
 
             case WINDOW_LISTBOX:
@@ -1258,7 +1267,6 @@ void ImplSmallBorderWindowView::DrawWindow( sal_uInt16 nDrawFlags, OutputDevice*
 
     if ( aCtrlType && pCtrl->IsNativeControlSupported(aCtrlType, aCtrlPart) )
     {
-        ImplControlValue aControlValue;
         ControlState     nState = ControlState::ENABLED;
 
         if ( !pWin->IsEnabled() )
@@ -1290,14 +1298,14 @@ void ImplSmallBorderWindowView::DrawWindow( sal_uInt16 nDrawFlags, OutputDevice*
         Rectangle aContentRgn( aCtrlRegion );
         if( ! ImplGetSVData()->maNWFData.mbCanDrawWidgetAnySize &&
             pWin->GetNativeControlRegion( aCtrlType, aCtrlPart, aCtrlRegion,
-                                          nState, aControlValue, OUString(),
+                                          nState, *xControlValue, OUString(),
                                           aBoundingRgn, aContentRgn ))
         {
             aCtrlRegion=aContentRgn;
         }
 
         bNativeOK = pWin->DrawNativeControl( aCtrlType, aCtrlPart, aCtrlRegion, nState,
-                aControlValue, OUString() );
+                *xControlValue, OUString() );
 
         // if the native theme draws the spinbuttons in one call, make sure the proper settings
         // are passed, this might force a redraw though.... (TODO: improve)
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index aba6dd9..9c992ba 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -980,7 +980,7 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
 }
 
 bool GtkSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState,
-                                                const ImplControlValue&, const OUString&,
+                                                const ImplControlValue& rValue, const OUString&,
                                                 Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion )
 {
     /* TODO: all this funcions needs improvements */
@@ -1069,6 +1069,25 @@ bool GtkSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPar
     {
         aEditRect = NWGetComboBoxButtonRect( nType, nPart, rControlRegion );
     }
+    else if (nType == CTRL_EDITBOX)
+    {
+        gtk_style_context_save(mpEntryStyle);
+        gtk_style_context_add_class(mpEntryStyle, GTK_STYLE_CLASS_ENTRY);
+
+        GtkBorder border;
+        gtk_style_context_get_border(mpEntryStyle, GTK_STATE_FLAG_NORMAL, &border);
+
+        GtkBorder padding;
+        gtk_style_context_get_padding(mpEntryStyle, GTK_STATE_FLAG_NORMAL, &padding);
+
+        auto nTextHeight = rValue.getNumericVal();
+
+        gint nWidgetHeight = nTextHeight + padding.top + padding.bottom + border.top + border.bottom;
+
+        aEditRect = Rectangle(rControlRegion.TopLeft(), Size(rControlRegion.GetWidth(), nWidgetHeight));
+
+        gtk_style_context_restore(mpEntryStyle);
+    }
     else
     {
         return false;


More information about the Libreoffice-commits mailing list