[Libreoffice-commits] core.git: 4 commits - include/tools include/vcl rsc/inc rsc/source sc/AllLangResTarget_sc.mk sc/source sc/uiconfig sc/UIConfig_scalc.mk vcl/source

Caolán McNamara caolanm at redhat.com
Mon Oct 24 12:05:08 UTC 2016


 include/tools/rc.h                      |   10 -
 include/tools/rcid.h                    |    2 
 include/vcl/button.hxx                  |    1 
 include/vcl/layout.hxx                  |   18 ++
 include/vcl/split.hxx                   |    1 
 rsc/inc/rscdb.hxx                       |    2 
 rsc/source/parser/rscicpx.cxx           |   67 -------
 rsc/source/parser/rscinit.cxx           |    5 
 sc/AllLangResTarget_sc.mk               |    1 
 sc/UIConfig_scalc.mk                    |    1 
 sc/source/ui/formdlg/dwfunctr.cxx       |  270 +-------------------------------
 sc/source/ui/formdlg/dwfunctr.hrc       |   26 ---
 sc/source/ui/formdlg/dwfunctr.src       |   97 -----------
 sc/source/ui/inc/dwfunctr.hxx           |   30 ---
 sc/source/ui/sidebar/ScPanelFactory.cxx |    2 
 sc/uiconfig/scalc/ui/functionpanel.ui   |  141 ++++++++++++++++
 vcl/source/control/button.cxx           |   20 --
 vcl/source/window/builder.cxx           |    8 
 vcl/source/window/layout.cxx            |  139 +++++++++++++++-
 vcl/source/window/split.cxx             |    5 
 20 files changed, 326 insertions(+), 520 deletions(-)

New commits:
commit 602274c77fa8134ca097f4d60b9fb75cea0eff78
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Oct 23 21:11:41 2016 +0100

    no ImageButton loaded from .src now
    
    Change-Id: If6f6718e1e6d756b99a499deafa4310c76a75ad3

diff --git a/include/tools/rc.h b/include/tools/rc.h
index 7759037..7eab5bf 100644
--- a/include/tools/rc.h
+++ b/include/tools/rc.h
@@ -77,16 +77,6 @@ namespace o3tl {
     template<> struct typed_flags<RscMenuItem> : is_typed_flags<RscMenuItem, 0xd6f> {};
 }
 
-// For "ImageButtons":
-enum class RscImageButtonFlags {
-    Image           = 0x01,
-    Symbol          = 0x02,
-    State           = 0x04
-};
-namespace o3tl {
-    template<> struct typed_flags<RscImageButtonFlags> : is_typed_flags<RscImageButtonFlags, 0x07> {};
-}
-
 // For "Image":
 enum class RscImageFlags {
     ImageBitmap       = 0x01,
diff --git a/include/tools/rcid.h b/include/tools/rcid.h
index 4d69c85..c88ee3c 100644
--- a/include/tools/rcid.h
+++ b/include/tools/rcid.h
@@ -49,8 +49,6 @@
 #define RSC_BUTTON              (RSC_NOTYPE + 0x45)
 #define RSC_PUSHBUTTON          (RSC_NOTYPE + 0x46)
 
-#define RSC_IMAGEBUTTON         (RSC_NOTYPE + 0x4a)
-
 #define RSC_EDIT                (RSC_NOTYPE + 0x52)
 
 #define RSC_LISTBOX             (RSC_NOTYPE + 0x55)
diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx
index c7976b4..ff52187 100644
--- a/include/vcl/button.hxx
+++ b/include/vcl/button.hxx
@@ -500,7 +500,6 @@ private:
 
 public:
                  ImageButton( vcl::Window* pParent, WinBits nStyle = 0 );
-                 ImageButton( vcl::Window* pParent, const ResId& rResId );
 };
 
 class VCL_DLLPUBLIC ImageRadioButton : public RadioButton
diff --git a/rsc/inc/rscdb.hxx b/rsc/inc/rscdb.hxx
index 715a88f..cbcafe0 100644
--- a/rsc/inc/rscdb.hxx
+++ b/rsc/inc/rscdb.hxx
@@ -176,8 +176,6 @@ class RscTypCont
                                  RscArray * pLangGeo );
     RscTop *    InitClassControl( RscTop * pSuper );
     RscTop *    InitClassPushButton( RscTop * pSuper );
-    RscTop *    InitClassImageButton( RscTop * pSuper, RscTop * pClassImage,
-                                    RscEnum * pTriState );
     RscTop *    InitClassEdit( RscTop * pSuper );
     RscTop *    InitClassListBox( RscTop * pSuper, RscArray * pStrLst );
     RscTop *    InitClassFixedText( RscTop * pSuper );
diff --git a/rsc/source/parser/rscicpx.cxx b/rsc/source/parser/rscicpx.cxx
index e2514b8..c502047 100644
--- a/rsc/source/parser/rscicpx.cxx
+++ b/rsc/source/parser/rscicpx.cxx
@@ -281,73 +281,6 @@ RscTop * RscTypCont::InitClassPushButton( RscTop * pSuper )
     return pClassPushButton;
 }
 
-RscTop * RscTypCont::InitClassImageButton( RscTop * pSuper,
-                                           RscTop * pClassImage,
-                                           RscEnum * pTriState )
-{
-    Atom        nId;
-    RscTop *    pClassImageButton;
-
-    // initialize class
-    nId = pHS->getID( "ImageButton" );
-    pClassImageButton = new RscClass( nId, RSC_IMAGEBUTTON, pSuper );
-    pClassImageButton->SetCallPar( *pWinPar1, *pWinPar2, *pWinParType );
-    aNmTb.Put( nId, CLASSNAME, pClassImageButton );
-
-    // initialize variables
-    {
-        nId = aNmTb.Put( "ButtonImage", VARNAME );
-        pClassImageButton->SetVariable( nId, pClassImage, nullptr, 0,
-                                         (sal_uInt32)RscImageButtonFlags::Image );
-    }
-    // initialize variables
-    {
-        Atom        nVarId;
-        RscEnum   * pSymbol;
-
-        aBaseLst.push_back( pSymbol = new RscEnum( pHS->getID( "EnumSymbolButton" ), RSC_NOTYPE ) );
-
-        SETCONST( pSymbol, "IMAGEBUTTON_DONTKNOW",      SymbolType::DONTKNOW );
-        SETCONST( pSymbol, "IMAGEBUTTON_IMAGE",         SymbolType::IMAGE );
-        SETCONST( pSymbol, "IMAGEBUTTON_ARROW_UP",      SymbolType::ARROW_UP );
-        SETCONST( pSymbol, "IMAGEBUTTON_ARROW_DOWN",    SymbolType::ARROW_DOWN );
-        SETCONST( pSymbol, "IMAGEBUTTON_ARROW_LEFT",    SymbolType::ARROW_LEFT );
-        SETCONST( pSymbol, "IMAGEBUTTON_ARROW_RIGHT",   SymbolType::ARROW_RIGHT );
-        SETCONST( pSymbol, "IMAGEBUTTON_SPIN_UP",       SymbolType::SPIN_UP );
-        SETCONST( pSymbol, "IMAGEBUTTON_SPIN_DOWN",     SymbolType::SPIN_DOWN );
-        SETCONST( pSymbol, "IMAGEBUTTON_SPIN_LEFT",     SymbolType::SPIN_LEFT );
-        SETCONST( pSymbol, "IMAGEBUTTON_SPIN_RIGHT",    SymbolType::SPIN_RIGHT );
-        SETCONST( pSymbol, "IMAGEBUTTON_FIRST",         SymbolType::FIRST );
-        SETCONST( pSymbol, "IMAGEBUTTON_LAST",          SymbolType::LAST );
-        SETCONST( pSymbol, "IMAGEBUTTON_PREV",          SymbolType::PREV );
-        SETCONST( pSymbol, "IMAGEBUTTON_NEXT",          SymbolType::NEXT );
-        SETCONST( pSymbol, "IMAGEBUTTON_PAGEUP",        SymbolType::PAGEUP );
-        SETCONST( pSymbol, "IMAGEBUTTON_PAGEDOWN",      SymbolType::PAGEDOWN );
-        SETCONST( pSymbol, "IMAGEBUTTON_PLAY",          SymbolType::PLAY );
-        SETCONST( pSymbol, "IMAGEBUTTON_REVERSEPLAY",   SymbolType::REVERSEPLAY );
-        SETCONST( pSymbol, "IMAGEBUTTON_STOP",          SymbolType::STOP );
-        SETCONST( pSymbol, "IMAGEBUTTON_PAUSE",         SymbolType::PAUSE );
-        SETCONST( pSymbol, "IMAGEBUTTON_WINDSTART",     SymbolType::WINDSTART );
-        SETCONST( pSymbol, "IMAGEBUTTON_WINDEND",       SymbolType::WINDEND );
-        SETCONST( pSymbol, "IMAGEBUTTON_WINDBACKWARD",  SymbolType::WINDBACKWARD );
-        SETCONST( pSymbol, "IMAGEBUTTON_WINDFORWARD",   SymbolType::WINDFORWARD );
-
-        // add variable
-        nVarId = aNmTb.Put( "Symbol", VARNAME );
-        pClassImageButton->SetVariable( nVarId, pSymbol, nullptr, 0,
-                                        (sal_uInt32)RscImageButtonFlags::Symbol );
-    }
-    nId = aNmTb.Put( "State", VARNAME );
-    pClassImageButton->SetVariable( nId, pTriState, nullptr, 0,
-                                    (sal_uInt32)RscImageButtonFlags::State );
-
-    INS_WINBIT(pClassImageButton,Repeat)
-    INS_WINBIT(pClassImageButton,SmallStyle)
-    INS_WINBIT(pClassImageButton,RectStyle)
-
-    return pClassImageButton;
-}
-
 RscTop * RscTypCont::InitClassEdit( RscTop * pSuper )
 {
     Atom        nId;
diff --git a/rsc/source/parser/rscinit.cxx b/rsc/source/parser/rscinit.cxx
index 735acef..68bb4f7 100644
--- a/rsc/source/parser/rscinit.cxx
+++ b/rsc/source/parser/rscinit.cxx
@@ -65,7 +65,6 @@ void RscTypCont::Init()
     RscTop   *  pClassControl;
     RscTop   *  pClassButton;
     RscTop   *  pClassPushButton;
-    RscTop   *  pClassImageButton;
     RscTop   *  pClassEdit;
     RscTop   *  pClassListBox;
     RscTop   *  pClassFixedText;
@@ -306,10 +305,6 @@ void RscTypCont::Init()
     pRoot->Insert( pClassPushButton );
 }
 {
-    pClassImageButton = InitClassImageButton( pClassPushButton,
-                                              pClassImage, pTriState );
-    pRoot->Insert( pClassImageButton );
-
     pClassEdit = InitClassEdit( pClassControl );
     pRoot->Insert( pClassEdit );
 }
diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx
index ebbe3c9..2ca4013 100644
--- a/vcl/source/control/button.cxx
+++ b/vcl/source/control/button.cxx
@@ -3777,26 +3777,6 @@ ImageButton::ImageButton( vcl::Window* pParent, WinBits nStyle ) :
     ImplInitStyle();
 }
 
-ImageButton::ImageButton( vcl::Window* pParent, const ResId& rResId ) :
-    PushButton( pParent, rResId.SetRT( RSC_IMAGEBUTTON ) )
-{
-    RscImageButtonFlags nObjMask = (RscImageButtonFlags)ReadLongRes();
-
-    if ( RscImageButtonFlags::Image & nObjMask )
-    {
-        SetModeImage( Image( ResId( static_cast<RSHEADER_TYPE*>(GetClassRes()), *rResId.GetResMgr() ) ) );
-        IncrementRes( GetObjSizeRes( static_cast<RSHEADER_TYPE*>(GetClassRes()) ) );
-    }
-
-    if ( RscImageButtonFlags::Symbol & nObjMask )
-        SetSymbol( (SymbolType)ReadLongRes() );
-
-    if ( RscImageButtonFlags::State & nObjMask )
-        SetState( (TriState)ReadLongRes() );
-
-    ImplInitStyle();
-}
-
 void ImageButton::ImplInitStyle()
 {
     WinBits nStyle = GetStyle();
commit 6f660293885733e64602aa6144c36ed7e7b43faf
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Oct 23 21:43:48 2016 +0100

    implement VclVPaned and decripple formula panel
    
    Change-Id: If87e481a5cf0ef34b469ac0440643b0a0e8a296c

diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx
index 7404630..4ed021f 100644
--- a/include/vcl/layout.hxx
+++ b/include/vcl/layout.hxx
@@ -16,6 +16,7 @@
 #include <vcl/fixed.hxx>
 #include <vcl/IPrioritable.hxx>
 #include <vcl/scrbar.hxx>
+#include <vcl/split.hxx>
 #include <vcl/vclmedit.hxx>
 #include <vcl/window.hxx>
 #include <vcl/vclptr.hxx>
@@ -375,6 +376,23 @@ public:
     virtual void setAllocation(const Size &rAllocation) override;
 };
 
+class VCL_DLLPUBLIC VclVPaned : public VclContainer
+{
+private:
+    VclPtr<Splitter> m_pSplitter;
+    long m_nPosition;
+    DECL_LINK(SplitHdl, Splitter*, void);
+    void arrange(const Size& rAllocation, long nFirstHeight, long nSecondHeight);
+public:
+    VclVPaned(vcl::Window *pParent, WinBits nStyle = WB_HIDE | WB_CLIPCHILDREN);
+    virtual ~VclVPaned() override { disposeOnce(); }
+    virtual void dispose() override;
+    virtual Size calculateRequisition() const override;
+    virtual void setAllocation(const Size &rAllocation) override;
+    long get_position() const { return m_nPosition; }
+    void set_position(long nPosition) { m_nPosition = nPosition; }
+};
+
 class VCL_DLLPUBLIC VclFrame : public VclBin
 {
 private:
diff --git a/include/vcl/split.hxx b/include/vcl/split.hxx
index 13f9ad7..853163d 100644
--- a/include/vcl/split.hxx
+++ b/include/vcl/split.hxx
@@ -75,6 +75,7 @@ public:
     virtual void        LoseFocus() override;
     virtual void        KeyInput( const KeyEvent& rKEvt ) override;
     virtual void        Paint( vcl::RenderContext& rRenderContext, const Rectangle& rPaintRect ) override;
+    virtual Size        GetOptimalSize() const override;
 
     virtual void        DataChanged( const DataChangedEvent& rDCEvt ) override;
 
diff --git a/sc/source/ui/formdlg/dwfunctr.cxx b/sc/source/ui/formdlg/dwfunctr.cxx
index a853c98..51ddbff 100644
--- a/sc/source/ui/formdlg/dwfunctr.cxx
+++ b/sc/source/ui/formdlg/dwfunctr.cxx
@@ -70,6 +70,7 @@ ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const css::uno::Reference<css
     aFont.SetColor(Color(COL_BLACK));
     aFiFuncDesc->SetFont(aFont);
     aFiFuncDesc->SetBackground( GetBackground() );       //! never transparent?
+    aFiFuncDesc->set_height_request(5 * aFiFuncDesc->GetTextHeight());
 
     Link<ListBox&,void> aLink=LINK( this, ScFunctionWin, SelHdl);
     aCatBox->SetSelectHdl(aLink);
diff --git a/sc/uiconfig/scalc/ui/functionpanel.ui b/sc/uiconfig/scalc/ui/functionpanel.ui
index 6a6fb56..c069660 100644
--- a/sc/uiconfig/scalc/ui/functionpanel.ui
+++ b/sc/uiconfig/scalc/ui/functionpanel.ui
@@ -2,11 +2,6 @@
 <!-- Generated with glade 3.20.0 -->
 <interface>
   <requires lib="gtk+" version="3.0"/>
-  <object class="GtkImage" id="image1">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="pixbuf">sc/res/fx.png</property>
-  </object>
   <object class="GtkGrid" id="FunctionPanel">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -20,27 +15,67 @@
         <property name="border_width">6</property>
         <property name="row_spacing">6</property>
         <child>
-          <object class="GtkGrid">
+          <object class="GtkPaned" id="splitter">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
+            <property name="can_focus">True</property>
             <property name="hexpand">True</property>
             <property name="vexpand">True</property>
-            <property name="row_spacing">6</property>
+            <property name="orientation">vertical</property>
+            <property name="wide_handle">True</property>
             <child>
               <object class="GtkGrid">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="hexpand">True</property>
-                <property name="column_spacing">12</property>
+                <property name="vexpand">True</property>
+                <property name="row_spacing">6</property>
                 <child>
-                  <object class="GtkButton" id="insert">
+                  <object class="GtkGrid">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="can_default">True</property>
-                    <property name="has_default">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="tooltip_text" translatable="yes">Insert Function into calculation sheet</property>
-                    <property name="image">image1</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="column_spacing">12</property>
+                    <child>
+                      <object class="GtkButton" id="insert">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="can_default">True</property>
+                        <property name="has_default">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="tooltip_text" translatable="yes">Insert Function into calculation sheet</property>
+                        <property name="image">image1</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBoxText" id="category">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="hexpand">True</property>
+                        <items>
+                          <item translatable="yes">Last Used</item>
+                          <item translatable="yes">All</item>
+                          <item translatable="yes">Database</item>
+                          <item translatable="yes">Date&Time</item>
+                          <item translatable="yes">Financial</item>
+                          <item translatable="yes">Information</item>
+                          <item translatable="yes">Logical</item>
+                          <item translatable="yes">Mathematical</item>
+                          <item translatable="yes">Array</item>
+                          <item translatable="yes">Statistical</item>
+                          <item translatable="yes">Spreadsheet</item>
+                          <item translatable="yes">Text</item>
+                          <item translatable="yes">Add-in</item>
+                        </items>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -48,51 +83,41 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkComboBoxText" id="category">
+                  <object class="GtkTreeView" id="funclist:border">
+                    <property name="name">functions</property>
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
+                    <property name="can_focus">True</property>
                     <property name="hexpand">True</property>
-                    <items>
-                      <item translatable="yes">Last Used</item>
-                      <item translatable="yes">All</item>
-                      <item translatable="yes">Database</item>
-                      <item translatable="yes">Date&Time</item>
-                      <item translatable="yes">Financial</item>
-                      <item translatable="yes">Information</item>
-                      <item translatable="yes">Logical</item>
-                      <item translatable="yes">Mathematical</item>
-                      <item translatable="yes">Array</item>
-                      <item translatable="yes">Statistical</item>
-                      <item translatable="yes">Spreadsheet</item>
-                      <item translatable="yes">Text</item>
-                      <item translatable="yes">Add-in</item>
-                    </items>
+                    <property name="vexpand">True</property>
+                    <child internal-child="selection">
+                      <object class="GtkTreeSelection"/>
+                    </child>
                   </object>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
                   </packing>
                 </child>
               </object>
               <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
+                <property name="resize">True</property>
+                <property name="shrink">True</property>
               </packing>
             </child>
             <child>
-              <object class="GtkTreeView" id="funclist">
-                <property name="name">functions</property>
+              <object class="GtkLabel" id="funcdesc:border">
+                <property name="name">funcdesc</property>
+                <property name="width_request">0</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</property>
-                <child internal-child="selection">
-                  <object class="GtkTreeSelection"/>
-                </child>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">label</property>
+                <property name="wrap">True</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0</property>
               </object>
               <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
+                <property name="resize">False</property>
+                <property name="shrink">True</property>
               </packing>
             </child>
           </object>
@@ -101,22 +126,6 @@
             <property name="top_attach">0</property>
           </packing>
         </child>
-        <child>
-          <object class="GtkLabel" id="funcdesc">
-            <property name="name">funcdesc</property>
-            <property name="width_request">0</property>
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label" translatable="yes">label</property>
-            <property name="wrap">True</property>
-            <property name="xalign">0</property>
-            <property name="yalign">0</property>
-          </object>
-          <packing>
-            <property name="left_attach">0</property>
-            <property name="top_attach">1</property>
-          </packing>
-        </child>
       </object>
       <packing>
         <property name="left_attach">0</property>
@@ -124,4 +133,9 @@
       </packing>
     </child>
   </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="pixbuf">sc/res/fx.png</property>
+  </object>
 </interface>
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index ddaedf0..a117a92 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -1346,6 +1346,12 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
         else
             xWindow = VclPtr<VclHBox>::Create(pParent);
     }
+    else if (name == "GtkPaned")
+    {
+        bVertical = extractOrientation(rMap);
+        assert(bVertical && "hori not implemented, shouldn't be hard though");
+        xWindow = VclPtr<VclVPaned>::Create(pParent);
+    }
     else if (name == "GtkHBox")
         xWindow = VclPtr<VclHBox>::Create(pParent);
     else if (name == "GtkVBox")
@@ -2992,7 +2998,7 @@ void VclBuilder::applyPackingProperty(vcl::Window *pCurrent,
                 xmlreader::XmlReader::Text::Raw, &name, &nsId);
             OString sValue(name.begin, name.length);
 
-            if (sKey == "expand")
+            if (sKey == "expand" || sKey == "resize")
             {
                 bool bTrue = (!sValue.isEmpty() && (sValue[0] == 't' || sValue[0] == 'T' || sValue[0] == '1'));
                 if (pToolBoxParent)
diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx
index cfaec6b..884e5e0 100644
--- a/vcl/source/window/layout.cxx
+++ b/vcl/source/window/layout.cxx
@@ -115,15 +115,23 @@ void VclContainer::setLayoutAllocation(vcl::Window &rChild, const Point &rAllocP
     setLayoutPosSize(rChild, aChildPos, aChildSize);
 }
 
+namespace
+{
+    Size subtractBorder(const vcl::Window &rWindow, const Size& rSize)
+    {
+        sal_Int32 nBorderWidth = rWindow.get_border_width();
+        sal_Int32 nLeft = rWindow.get_margin_left() + nBorderWidth;
+        sal_Int32 nTop = rWindow.get_margin_top() + nBorderWidth;
+        sal_Int32 nRight = rWindow.get_margin_right() + nBorderWidth;
+        sal_Int32 nBottom = rWindow.get_margin_bottom() + nBorderWidth;
+        Size aSize(rSize);
+        return Size(aSize.Width() + nLeft + nRight, aSize.Height() + nTop + nBottom);
+    }
+}
+
 Size VclContainer::getLayoutRequisition(const vcl::Window &rWindow)
 {
-    sal_Int32 nBorderWidth = rWindow.get_border_width();
-    sal_Int32 nLeft = rWindow.get_margin_left() + nBorderWidth;
-    sal_Int32 nTop = rWindow.get_margin_top() + nBorderWidth;
-    sal_Int32 nRight = rWindow.get_margin_right() + nBorderWidth;
-    sal_Int32 nBottom = rWindow.get_margin_bottom() + nBorderWidth;
-    Size aSize(rWindow.get_preferred_size());
-    return Size(aSize.Width() + nLeft + nRight, aSize.Height() + nTop + nBottom);
+    return subtractBorder(rWindow, rWindow.get_preferred_size());
 }
 
 void VclContainer::SetPosSizePixel(const Point& rAllocPos, const Size& rAllocation)
@@ -2515,6 +2523,123 @@ void MessageDialog::set_secondary_text(const OUString &rSecondaryString)
     }
 }
 
+VclVPaned::VclVPaned(vcl::Window *pParent, WinBits nStyle)
+    : VclContainer(pParent, nStyle)
+    , m_pSplitter(VclPtr<Splitter>::Create(this, WB_VSCROLL))
+    , m_nPosition(-1)
+{
+    m_pSplitter->SetSplitHdl(LINK(this, VclVPaned, SplitHdl));
+    m_pSplitter->SetBackground(Wallpaper(Application::GetSettings().GetStyleSettings().GetFaceColor()));
+    m_pSplitter->Show();
+}
+
+void VclVPaned::dispose()
+{
+    m_pSplitter.disposeAndClear();
+    VclContainer::dispose();
+}
+
+IMPL_LINK(VclVPaned, SplitHdl, Splitter*, pSplitter, void)
+{
+    double nSize = pSplitter->GetSplitPosPixel();
+    Size aSplitterSize(m_pSplitter->GetSizePixel());
+    Size aAllocation(GetSizePixel());
+    arrange(aAllocation, nSize, aAllocation.Height() - nSize - aSplitterSize.Height());
+}
+
+void VclVPaned::arrange(const Size& rAllocation, long nFirstHeight, long nSecondHeight)
+{
+    Size aSplitterSize(rAllocation.Width(), getLayoutRequisition(*m_pSplitter).Height());
+    Size aFirstChildSize(rAllocation.Width(), nFirstHeight);
+    Size aSecondChildSize(rAllocation.Width(), nSecondHeight);
+    int nElement = 0;
+    for (vcl::Window* pChild = GetWindow(GetWindowType::FirstChild); pChild;
+        pChild = pChild->GetWindow(GetWindowType::Next))
+    {
+        if (!pChild->IsVisible())
+            continue;
+        if (nElement == 0)
+        {
+            Point aSplitterPos(0, aFirstChildSize.Height());
+            setLayoutAllocation(*m_pSplitter, aSplitterPos, aSplitterSize);
+            set_position(aSplitterPos.Y() + aSplitterSize.Height() / 2);
+        }
+        else if (nElement == 1)
+        {
+            Point aChildPos(0, 0);
+            setLayoutAllocation(*pChild, aChildPos, aFirstChildSize);
+        }
+        else if (nElement == 2)
+        {
+            Point aChildPos(0, aFirstChildSize.Height() + aSplitterSize.Height());
+            setLayoutAllocation(*pChild, aChildPos, aSecondChildSize);
+        }
+        ++nElement;
+    }
+}
+
+void VclVPaned::setAllocation(const Size& rAllocation)
+{
+    //supporting "shrink" could be done by adjusting the allowed drag rectangle
+    m_pSplitter->SetDragRectPixel(Rectangle(Point(0, 0), rAllocation));
+    Size aSplitterSize(rAllocation.Width(), getLayoutRequisition(*m_pSplitter).Height());
+    const long nHeight = rAllocation.Height() - aSplitterSize.Height();
+
+    long nFirstHeight = 0;
+    long nSecondHeight = 0;
+    bool bFirstCanResize = true;
+    bool bSecondCanResize = true;
+    const bool bInitialAllocation = get_position() < 0;
+    int nElement = 0;
+    for (const vcl::Window* pChild = GetWindow(GetWindowType::FirstChild); pChild;
+        pChild = pChild->GetWindow(GetWindowType::Next))
+    {
+        if (!pChild->IsVisible())
+            continue;
+        if (nElement == 1)
+        {
+            if (bInitialAllocation)
+                nFirstHeight = getLayoutRequisition(*pChild).Height();
+            else
+                nFirstHeight = pChild->GetSizePixel().Height();
+            bFirstCanResize = pChild->get_expand();
+        }
+        else if (nElement == 2)
+        {
+            if (bInitialAllocation)
+                nSecondHeight = getLayoutRequisition(*pChild).Height();
+            else
+                nSecondHeight = pChild->GetSizePixel().Height();
+            bSecondCanResize = pChild->get_expand();
+        }
+        ++nElement;
+    }
+    long nHeightRequest = nFirstHeight + nSecondHeight;
+    long nHeightDiff = nHeight - nHeightRequest;
+    if (bFirstCanResize == bSecondCanResize)
+        nFirstHeight += nHeightDiff/2;
+    else if (bFirstCanResize)
+        nFirstHeight += nHeightDiff;
+    arrange(rAllocation, nFirstHeight, nSecondHeight);
+}
+
+Size VclVPaned::calculateRequisition() const
+{
+    Size aRet(0, 0);
+
+    for (const vcl::Window* pChild = GetWindow(GetWindowType::FirstChild); pChild;
+        pChild = pChild->GetWindow(GetWindowType::Next))
+    {
+        if (!pChild->IsVisible())
+            continue;
+        Size aChildSize = getLayoutRequisition(*pChild);
+        aRet.Width() = std::max(aRet.Width(), aChildSize.Width());
+        aRet.Height() += aChildSize.Height();
+    }
+
+    return aRet;
+}
+
 Size getLegacyBestSizeForChildren(const vcl::Window &rWindow)
 {
     Rectangle aBounds;
diff --git a/vcl/source/window/split.cxx b/vcl/source/window/split.cxx
index 2dbe388..eb6da6e 100644
--- a/vcl/source/window/split.cxx
+++ b/vcl/source/window/split.cxx
@@ -694,4 +694,9 @@ void Splitter::Paint(vcl::RenderContext& rRenderContext, const Rectangle& rPaint
     }
 }
 
+Size Splitter::GetOptimalSize() const
+{
+    return LogicToPixel(Size(3, 3), MapUnit::MapAppFont);
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit a2ba500c70292a33e7b34a6428cc86c17078a72c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Oct 23 20:55:26 2016 +0100

    convert function panel to .ui format
    
    Change-Id: I79e069aa9bd15642d969d5829a5ad2fa2d264d6c

diff --git a/sc/AllLangResTarget_sc.mk b/sc/AllLangResTarget_sc.mk
index 9708c7b..6674502 100644
--- a/sc/AllLangResTarget_sc.mk
+++ b/sc/AllLangResTarget_sc.mk
@@ -43,7 +43,6 @@ $(eval $(call gb_SrsTarget_add_files,sc/res,\
     sc/source/ui/miscdlgs/retypepassdlg.src \
     sc/source/ui/miscdlgs/conflictsdlg.src \
     sc/source/ui/miscdlgs/acredlin.src \
-    sc/source/ui/formdlg/dwfunctr.src \
     sc/source/ui/sidebar/CellAppearancePropertyPanel.src \
     sc/source/ui/StatisticsDialogs/StatisticsDialogs.src \
     sc/source/core/src/compiler.src \
diff --git a/sc/UIConfig_scalc.mk b/sc/UIConfig_scalc.mk
index 5008729..d50164b 100644
--- a/sc/UIConfig_scalc.mk
+++ b/sc/UIConfig_scalc.mk
@@ -127,6 +127,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/scalc,\
 	sc/uiconfig/scalc/ui/formulacalculationoptions \
 	sc/uiconfig/scalc/ui/floatingborderstyle \
 	sc/uiconfig/scalc/ui/floatinglinestyle \
+	sc/uiconfig/scalc/ui/functionpanel \
 	sc/uiconfig/scalc/ui/goalseekdlg \
 	sc/uiconfig/scalc/ui/groupdialog \
 	sc/uiconfig/scalc/ui/groupbydate \
diff --git a/sc/source/ui/formdlg/dwfunctr.cxx b/sc/source/ui/formdlg/dwfunctr.cxx
index 772267c..a853c98 100644
--- a/sc/source/ui/formdlg/dwfunctr.cxx
+++ b/sc/source/ui/formdlg/dwfunctr.cxx
@@ -36,7 +36,6 @@
 #include "appoptio.hxx"
 #include "compiler.hxx"
 
-#include "dwfunctr.hrc"
 #include "dwfunctr.hxx"
 
 /*************************************************************************
@@ -53,17 +52,16 @@
 #*
 #************************************************************************/
 
-ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const ResId& rResId) :
-    vcl::Window(pParent, rResId),
-    aCatBox         ( VclPtr<ListBox>::Create( this, ResId( CB_CAT, *rResId.GetResMgr() ) ) ),
-    aFuncList       ( VclPtr<ListBox>::Create( this, ResId( LB_FUNC, *rResId.GetResMgr() ) ) ),
-    aInsertButton   ( VclPtr<ImageButton>::Create( this, ResId( IMB_INSERT, *rResId.GetResMgr() ) ) ),
-    aFiFuncDesc     ( VclPtr<FixedText>::Create( this, ResId( FI_FUNCDESC, *rResId.GetResMgr() ) ) ),
-    pFuncDesc       (nullptr)
+ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame> &rFrame)
+    : PanelLayout(pParent, "FunctionPanel", "modules/scalc/ui/functionpanel.ui", rFrame)
+    , pFuncDesc(nullptr)
 {
-    FreeResource();
+    get(aCatBox, "category");
+    get(aFuncList, "funclist");
+    get(aInsertButton, "insert");
+    get(aFiFuncDesc, "funcdesc");
+
     InitLRUList();
-    SetStyle(GetStyle()|WB_CLIPCHILDREN);
 
     aFiFuncDesc->SetUpdateMode(true);
     nArgs=0;
@@ -106,11 +104,11 @@ ScFunctionWin::~ScFunctionWin()
 
 void ScFunctionWin::dispose()
 {
-    aCatBox.disposeAndClear();
-    aFuncList.disposeAndClear();
-    aInsertButton.disposeAndClear();
-    aFiFuncDesc.disposeAndClear();
-    vcl::Window::dispose();
+    aCatBox.clear();
+    aFuncList.clear();
+    aInsertButton.clear();
+    aFiFuncDesc.clear();
+    PanelLayout::dispose();
 }
 
 /*************************************************************************
diff --git a/sc/source/ui/formdlg/dwfunctr.hrc b/sc/source/ui/formdlg/dwfunctr.hrc
deleted file mode 100644
index b025f13..0000000
--- a/sc/source/ui/formdlg/dwfunctr.hrc
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#define CB_CAT      1
-#define LB_FUNC     2
-#define IMB_INSERT  1
-#define FI_FUNCDESC 1
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/formdlg/dwfunctr.src b/sc/source/ui/formdlg/dwfunctr.src
deleted file mode 100644
index 8c539e4..0000000
--- a/sc/source/ui/formdlg/dwfunctr.src
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include "sc.hrc"
-#include "dwfunctr.hrc"
-
-Window FID_FUNCTION_BOX
-{
-    SVLook = TRUE ;
-    Size = MAP_APPFONT ( 130 , 160 ) ;
-    HelpId = HID_FUNCTION_BOX ;
-    ListBox CB_CAT
-    {
-        HelpID = "sc:ListBox:FID_FUNCTION_BOX:CB_CAT";
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( 20 , 4 ) ;
-        Size = MAP_APPFONT ( 56 , 80 ) ;
-        DropDown = TRUE ;
-        AutoSize = TRUE ;
-        TabStop = TRUE ;
-        DropDown = TRUE ;
-        AutoHScroll = TRUE ;
-        StringList [ en-US ] =
-        {
-            < "Last Used" ; Default ; > ;
-            < "All" ; Default ; > ;
-            < "Database" ; Default ; > ;
-            < "Date&Time" ; Default ; > ;
-            < "Financial" ; Default ; > ;
-            < "Information" ; Default ; > ;
-            < "Logical" ; Default ; > ;
-            < "Mathematical" ; Default ; > ;
-            < "Array" ; Default ; > ;
-            < "Statistical" ; Default ; > ;
-            < "Spreadsheet" ; Default ; > ;
-            < "Text" ; Default ; > ;
-            < "Add-in" ; Default ; > ;
-        };
-    };
-    ListBox LB_FUNC
-    {
-        HelpID = "sc:ListBox:FID_FUNCTION_BOX:LB_FUNC";
-        Border = TRUE ;
-        Pos = MAP_APPFONT ( 3 , 19 ) ;
-        Size = MAP_APPFONT ( 72 , 90 ) ;
-        TabStop = TRUE ;
-        AutoHScroll = TRUE ;
-    };
-    FixedText FI_FUNCDESC
-    {
-        WordBreak = TRUE ;
-        Border = TRUE ;
-        SVLook = TRUE ;
-        Pos = MAP_APPFONT ( 3 , 115 ) ;
-        Size = MAP_APPFONT ( 72 , 40 ) ;
-    };
-    ImageButton IMB_INSERT
-    {
-        HelpID = "sc:ImageButton:FID_FUNCTION_BOX:IMB_INSERT";
-        Pos = MAP_APPFONT ( 3 , 4 ) ;
-        Size = MAP_APPFONT ( 13 , 13 ) ;
-        TabStop = TRUE ;
-        ButtonImage = Image
-        {
-            ImageBitmap = Bitmap
-            {
-                File = "fx.png";
-            };
-        };
-        DefButton = TRUE ;
-        QuickHelpText [ en-US ] = "Insert Function into calculation sheet" ;
-    };
-    Text [ en-US ] = "Functions" ;
-};
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/dwfunctr.hxx b/sc/source/ui/inc/dwfunctr.hxx
index 7352bb5..f9dcd86 100644
--- a/sc/source/ui/inc/dwfunctr.hxx
+++ b/sc/source/ui/inc/dwfunctr.hxx
@@ -26,22 +26,23 @@
 #include <vcl/lstbox.hxx>
 #include <vcl/button.hxx>
 #include <vcl/combobox.hxx>
+#include <svx/sidebar/PanelLayout.hxx>
 #include "anyrefdg.hxx"
 #include "global.hxx"
 #include "privsplt.hxx"
 #include "funcdesc.hxx"
 
-class ScFunctionWin : public vcl::Window
+class ScFunctionWin : public PanelLayout
 {
 
 private:
     VclPtr<ListBox>     aCatBox;
     VclPtr<ListBox>     aFuncList;
 
-    VclPtr<ImageButton> aInsertButton;
+    VclPtr<PushButton>  aInsertButton;
     VclPtr<FixedText>   aFiFuncDesc;
     const ScFuncDesc*   pFuncDesc;
-    sal_uInt16              nArgs;
+    sal_uInt16          nArgs;
 
     ::std::vector< const formula::IFunctionDescription*> aLRUList;
 
@@ -55,7 +56,7 @@ private:
                     DECL_LINK( SelHdl, ListBox&, void );
 
 public:
-    ScFunctionWin(vcl::Window* pParent, const ResId& rResId);
+    ScFunctionWin(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame> &rFrame);
 
     virtual ~ScFunctionWin() override;
     virtual void    dispose() override;
diff --git a/sc/source/ui/sidebar/ScPanelFactory.cxx b/sc/source/ui/sidebar/ScPanelFactory.cxx
index 02a060e..7665ebf 100644
--- a/sc/source/ui/sidebar/ScPanelFactory.cxx
+++ b/sc/source/ui/sidebar/ScPanelFactory.cxx
@@ -98,7 +98,7 @@ Reference<ui::XUIElement> SAL_CALL ScPanelFactory::createUIElement (
         }
         else if (rsResourceURL.endsWith("/FunctionsPanel"))
         {
-            pPanel = VclPtr<ScFunctionWin>::Create(pParentWindow, ScResId(FID_FUNCTION_BOX));
+            pPanel = VclPtr<ScFunctionWin>::Create(pParentWindow, xFrame);
             nMinimumSize = 0;
         }
 
diff --git a/sc/uiconfig/scalc/ui/functionpanel.ui b/sc/uiconfig/scalc/ui/functionpanel.ui
new file mode 100644
index 0000000..6a6fb56
--- /dev/null
+++ b/sc/uiconfig/scalc/ui/functionpanel.ui
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="pixbuf">sc/res/fx.png</property>
+  </object>
+  <object class="GtkGrid" id="FunctionPanel">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="border_width">6</property>
+    <child>
+      <object class="GtkGrid">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="border_width">6</property>
+        <property name="row_spacing">6</property>
+        <child>
+          <object class="GtkGrid">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="row_spacing">6</property>
+            <child>
+              <object class="GtkGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="column_spacing">12</property>
+                <child>
+                  <object class="GtkButton" id="insert">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="can_default">True</property>
+                    <property name="has_default">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="tooltip_text" translatable="yes">Insert Function into calculation sheet</property>
+                    <property name="image">image1</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="category">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <items>
+                      <item translatable="yes">Last Used</item>
+                      <item translatable="yes">All</item>
+                      <item translatable="yes">Database</item>
+                      <item translatable="yes">Date&Time</item>
+                      <item translatable="yes">Financial</item>
+                      <item translatable="yes">Information</item>
+                      <item translatable="yes">Logical</item>
+                      <item translatable="yes">Mathematical</item>
+                      <item translatable="yes">Array</item>
+                      <item translatable="yes">Statistical</item>
+                      <item translatable="yes">Spreadsheet</item>
+                      <item translatable="yes">Text</item>
+                      <item translatable="yes">Add-in</item>
+                    </items>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTreeView" id="funclist">
+                <property name="name">functions</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <child internal-child="selection">
+                  <object class="GtkTreeSelection"/>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="funcdesc">
+            <property name="name">funcdesc</property>
+            <property name="width_request">0</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">label</property>
+            <property name="wrap">True</property>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">0</property>
+      </packing>
+    </child>
+  </object>
+</interface>
commit d02e96e0f29c9520c56221473c5bd731600b6e15
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Oct 23 20:41:11 2016 +0100

    temporarily cripple formula panel by removing FT_SPLIT
    
    Change-Id: I0a96a812b597aa657138ef061e4918018111cfa6

diff --git a/sc/source/ui/formdlg/dwfunctr.cxx b/sc/source/ui/formdlg/dwfunctr.cxx
index 935d471..772267c 100644
--- a/sc/source/ui/formdlg/dwfunctr.cxx
+++ b/sc/source/ui/formdlg/dwfunctr.cxx
@@ -55,25 +55,18 @@
 
 ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const ResId& rResId) :
     vcl::Window(pParent, rResId),
-    aIdle       ( "sc formdlg ScFunctionWin" ),
-    aPrivatSplit    ( VclPtr<ScPrivatSplit>::Create( this, ResId( FT_SPLIT, *rResId.GetResMgr() ) ) ),
     aCatBox         ( VclPtr<ListBox>::Create( this, ResId( CB_CAT, *rResId.GetResMgr() ) ) ),
     aFuncList       ( VclPtr<ListBox>::Create( this, ResId( LB_FUNC, *rResId.GetResMgr() ) ) ),
     aInsertButton   ( VclPtr<ImageButton>::Create( this, ResId( IMB_INSERT, *rResId.GetResMgr() ) ) ),
     aFiFuncDesc     ( VclPtr<FixedText>::Create( this, ResId( FI_FUNCDESC, *rResId.GetResMgr() ) ) ),
-    aOldSize        (0,0),
     pFuncDesc       (nullptr)
 {
     FreeResource();
     InitLRUList();
     SetStyle(GetStyle()|WB_CLIPCHILDREN);
 
-    aIdle.SetPriority(SchedulerPriority::LOWER);
-    aIdle.SetIdleHdl(LINK( this, ScFunctionWin, TimerHdl));
-
     aFiFuncDesc->SetUpdateMode(true);
     nArgs=0;
-    bSizeFlag=false;
     aCatBox->SetDropDownLineCount(9);
     vcl::Font aFont=aFiFuncDesc->GetFont();
     aFont.SetColor(Color(COL_BLACK));
@@ -87,20 +80,8 @@ ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const ResId& rResId) :
     aFuncList->SetDoubleClickHdl(LINK( this, ScFunctionWin, SetSelectionHdl));
     aInsertButton->SetClickHdl(LINK( this, ScFunctionWin, SetSelectionClickHdl));
 
-    Link<ScPrivatSplit&,void> a3Link=LINK( this, ScFunctionWin, SetSplitHdl);
-    aPrivatSplit->SetCtrModifiedHdl(a3Link);
-
-    Point aTopLeft=aCatBox->GetPosPixel();
-    OUString aString("ww");
-    Size aTxtSize( aFiFuncDesc->GetTextWidth(aString), aFiFuncDesc->GetTextHeight() );
-    nMinWidth=aTxtSize.Width()+aTopLeft.X()
-            +2*aFuncList->GetPosPixel().X();
-    nMinHeight=19*aTxtSize.Height();
     aCatBox->SelectEntryPos(0);
 
-    Range aYRange(3*aTxtSize.Height()+aFuncList->GetPosPixel().Y(),
-                GetOutputSizePixel().Height()-2*aTxtSize.Height());
-    aPrivatSplit->SetYRange(aYRange);
     SelHdl(*aCatBox.get());
 }
 
@@ -125,7 +106,6 @@ ScFunctionWin::~ScFunctionWin()
 
 void ScFunctionWin::dispose()
 {
-    aPrivatSplit.disposeAndClear();
     aCatBox.disposeAndClear();
     aFuncList.disposeAndClear();
     aInsertButton.disposeAndClear();
@@ -183,158 +163,6 @@ void ScFunctionWin::UpdateLRUList()
 }
 
 /*************************************************************************
-#*  Member:     SetSize
-#*------------------------------------------------------------------------
-#*
-#*  Klasse:     ScFunctionWin
-#*
-#*  Funktion:   Groesse fuer die einzelnen Controls einzustellen.
-#*
-#*  Input:      ---
-#*
-#*  Output:     ---
-#*
-#************************************************************************/
-
-void ScFunctionWin::SetSize()
-{
-    SetLeftRightSize();
-}
-
-/*************************************************************************
-#*  Member:     SetLeftRightSize
-#*------------------------------------------------------------------------
-#*
-#*  Klasse:     ScFunctionWin
-#*
-#*  Funktion:   Groesse fuer die einzelnen Controls einstellen,
-#*              wenn Links oder Rechts angedockt wird.
-#*
-#*  Input:      ---
-#*
-#*  Output:     ---
-#*
-#************************************************************************/
-
-void ScFunctionWin::SetLeftRightSize()
-{
-    if(!bSizeFlag)
-    {
-        bSizeFlag = true;
-
-        Size aDiffSize=GetSizePixel();
-        Size aNewSize=GetOutputSizePixel();
-        aDiffSize.Width()-=aNewSize.Width();
-        aDiffSize.Height()-=aNewSize.Height();
-
-        OUString aString("ww");
-        Size aTxtSize( aFuncList->GetTextWidth(aString), aFuncList->GetTextHeight() );
-
-        Range aYRange(3*aTxtSize.Height()+aFuncList->GetPosPixel().Y(),
-                    GetOutputSizePixel().Height()-2*aTxtSize.Height());
-        aPrivatSplit->SetYRange(aYRange);
-
-        if(aOldSize.Width()!=aNewSize.Width())
-            SetMyWidthLeRi(aNewSize);
-
-        if(aOldSize.Height()!=aNewSize.Height())
-            SetMyHeightLeRi(aNewSize);
-
-        aOldSize=aNewSize;
-        aNewSize.Width()+=aDiffSize.Width();
-        aNewSize.Height()+=aDiffSize.Height();
-        bSizeFlag=false;
-    }
-
-}
-
-/*************************************************************************
-#*  Member:     SetMyWidthLeRi
-#*------------------------------------------------------------------------
-#*
-#*  Klasse:     ScFunctionWin
-#*
-#*  Funktion:   Breite fuer die einzelnen Controls und
-#*              das Fenster einstellen,wenn Li oder Re
-#*
-#*  Input:      neue Fenstergroesse
-#*
-#*  Output:     ---
-#*
-#************************************************************************/
-
-void ScFunctionWin::SetMyWidthLeRi(Size &aNewSize)
-{
-    if((sal_uLong)aNewSize.Width()<nMinWidth)   aNewSize.Width()=nMinWidth;
-
-    Size aCDSize=aCatBox->GetSizePixel();
-    Size aFLSize=aFuncList->GetSizePixel();
-    Size aSplitterSize=aPrivatSplit->GetSizePixel();
-    Size aFDSize=aFiFuncDesc->GetSizePixel();
-
-    Point aCDTopLeft=aCatBox->GetPosPixel();
-    Point aFLTopLeft=aFuncList->GetPosPixel();
-
-    aCDSize.Width()=aNewSize.Width()-aCDTopLeft.X()-aFLTopLeft.X();
-    aFLSize.Width()=aNewSize.Width()-2*aFLTopLeft.X();
-    aFDSize.Width()=aFLSize.Width();
-    aSplitterSize.Width()=aFLSize.Width();
-
-    aCatBox->SetSizePixel(aCDSize);
-    aFuncList->SetSizePixel(aFLSize);
-    aPrivatSplit->SetSizePixel(aSplitterSize);
-    aFiFuncDesc->SetSizePixel(aFDSize);
-}
-
-/*************************************************************************
-#*  Member:     SetHeight
-#*------------------------------------------------------------------------
-#*
-#*  Klasse:     ScFunctionWin
-#*
-#*  Funktion:   Hoehe fuer die einzelnen Controls und
-#*              das Fenster einstellen bei Li oder Re
-#*
-#*  Input:      neue Fenstergroesse
-#*
-#*  Output:     ---
-#*
-#************************************************************************/
-
-void ScFunctionWin::SetMyHeightLeRi(Size &aNewSize)
-{
-    if((sal_uLong)aNewSize.Height()<nMinHeight) aNewSize.Height()=nMinHeight;
-
-    Size aFLSize=aFuncList->GetSizePixel();
-    Size aSplitterSize=aPrivatSplit->GetSizePixel();
-    Size aFDSize=aFiFuncDesc->GetSizePixel();
-
-    Point aFLTopLeft=aFuncList->GetPosPixel();
-    Point aSplitterTopLeft=aPrivatSplit->GetPosPixel();
-    Point aFDTopLeft=aFiFuncDesc->GetPosPixel();
-
-    long nTxtHeight = aFuncList->GetTextHeight();
-
-    short nY=(short)(3*nTxtHeight+
-        aFuncList->GetPosPixel().Y()+aSplitterSize.Height());
-
-    aFDTopLeft.Y()=aNewSize.Height()-aFDSize.Height()-4;
-    if(nY>aFDTopLeft.Y())
-    {
-        aFDSize.Height()-=nY-aFDTopLeft.Y();
-        aFDTopLeft.Y()=nY;
-    }
-    aSplitterTopLeft.Y()=aFDTopLeft.Y()-aSplitterSize.Height()-1;
-    aFLSize.Height()=aSplitterTopLeft.Y()-aFLTopLeft.Y()-1;
-
-    aFuncList->SetSizePixel(aFLSize);
-    aPrivatSplit->SetPosPixel(aSplitterTopLeft);
-    aFiFuncDesc->SetPosPixel(aFDTopLeft);
-    aFiFuncDesc->SetSizePixel(aFDSize);
-
-}
-
-/*************************************************************************
 #*  Member:     SetDescription
 #*------------------------------------------------------------------------
 #*
@@ -372,13 +200,6 @@ void ScFunctionWin::SetDescription()
     }
 }
 
-/// override to set new size of the controls
-void ScFunctionWin::Resize()
-{
-    SetSize();
-    vcl::Window::Resize();
-}
-
 /*************************************************************************
 #*  Member:     UpdateFunctionList
 #*------------------------------------------------------------------------
@@ -614,66 +435,4 @@ IMPL_LINK_NOARG( ScFunctionWin, SetSelectionHdl, ListBox&, void )
     DoEnter();          // Uebernimmt die Eingabe
 }
 
-/*************************************************************************
-#*  Handle:     SetSplitHdl
-#*------------------------------------------------------------------------
-#*
-#*  Klasse:     ScFunctionWin
-#*
-#*  Funktion:   Bei einer Aenderung des Split- Controls werden die
-#*              einzelnen Controls an die neue Groesse angepasst.
-#*
-#*  Input:      Zeiger auf Control
-#*
-#*  Output:     ---
-#*
-#************************************************************************/
-
-IMPL_LINK( ScFunctionWin, SetSplitHdl, ScPrivatSplit&, rCtrl, void )
-{
-    if (&rCtrl == aPrivatSplit.get())
-    {
-        short nDeltaY=aPrivatSplit->GetDeltaY();
-        Size aFLSize=aFuncList->GetSizePixel();
-        Size aFDSize=aFiFuncDesc->GetSizePixel();
-        Point aFDTopLeft=aFiFuncDesc->GetPosPixel();
-
-        aFLSize.Height()+=nDeltaY;
-        aFDSize.Height()-=nDeltaY;
-        aFDTopLeft.Y()+=nDeltaY;
-        aFuncList->SetSizePixel(aFLSize);
-        aFiFuncDesc->SetPosPixel(aFDTopLeft);
-        aFiFuncDesc->SetSizePixel(aFDSize);
-    }
-}
-
-IMPL_LINK_NOARG(ScFunctionWin, TimerHdl, Idle *, void)
-{
-    OUString aString("ww");
-    Size aTxtSize( aFiFuncDesc->GetTextWidth(aString), aFiFuncDesc->GetTextHeight() );
-    Point aTopLeft=aCatBox->GetPosPixel();
-    nMinWidth=aTxtSize.Width()+aTopLeft.X() +2*aFuncList->GetPosPixel().X();
-    nMinHeight=19*aTxtSize.Height();
-    SetSize();
-}
-
-void ScFunctionWin::UseSplitterInitPos()
-{
-    if ( IsVisible() && aPrivatSplit->IsEnabled() && aSplitterInitPos != Point() )
-    {
-        aPrivatSplit->MoveSplitTo(aSplitterInitPos);
-        aSplitterInitPos = Point();     // use only once
-    }
-}
-
-void ScFunctionWin::StateChanged( StateChangedType nStateChange )
-{
-    vcl::Window::StateChanged( nStateChange );
-
-    if (nStateChange == StateChangedType::InitShow)
-    {
-        UseSplitterInitPos();           //  set initial splitter position if necessary
-    }
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/formdlg/dwfunctr.hrc b/sc/source/ui/formdlg/dwfunctr.hrc
index 8b34df8..b025f13 100644
--- a/sc/source/ui/formdlg/dwfunctr.hrc
+++ b/sc/source/ui/formdlg/dwfunctr.hrc
@@ -21,6 +21,5 @@
 #define LB_FUNC     2
 #define IMB_INSERT  1
 #define FI_FUNCDESC 1
-#define FT_SPLIT    2
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/formdlg/dwfunctr.src b/sc/source/ui/formdlg/dwfunctr.src
index 6d6e9b9..8c539e4 100644
--- a/sc/source/ui/formdlg/dwfunctr.src
+++ b/sc/source/ui/formdlg/dwfunctr.src
@@ -70,11 +70,6 @@ Window FID_FUNCTION_BOX
         Pos = MAP_APPFONT ( 3 , 115 ) ;
         Size = MAP_APPFONT ( 72 , 40 ) ;
     };
-    Control FT_SPLIT
-    {
-        Pos = MAP_APPFONT ( 3 , 110 ) ;
-        Size = MAP_APPFONT ( 72 , 3 ) ;
-    };
     ImageButton IMB_INSERT
     {
         HelpID = "sc:ImageButton:FID_FUNCTION_BOX:IMB_INSERT";
diff --git a/sc/source/ui/inc/dwfunctr.hxx b/sc/source/ui/inc/dwfunctr.hxx
index 73945d2..7352bb5 100644
--- a/sc/source/ui/inc/dwfunctr.hxx
+++ b/sc/source/ui/inc/dwfunctr.hxx
@@ -35,18 +35,11 @@ class ScFunctionWin : public vcl::Window
 {
 
 private:
-    Idle                aIdle;
-    VclPtr<ScPrivatSplit> aPrivatSplit;
     VclPtr<ListBox>     aCatBox;
     VclPtr<ListBox>     aFuncList;
 
     VclPtr<ImageButton> aInsertButton;
     VclPtr<FixedText>   aFiFuncDesc;
-    sal_uLong           nMinWidth;
-    sal_uLong           nMinHeight;
-    Size                aOldSize;
-    bool                bSizeFlag;
-    Point               aSplitterInitPos;
     const ScFuncDesc*   pFuncDesc;
     sal_uInt16              nArgs;
 
@@ -56,27 +49,15 @@ private:
     void            UpdateLRUList();
     void            DoEnter();
     void            SetDescription();
-    void            SetLeftRightSize();
-    void            SetMyWidthLeRi(Size &aNewSize);
-    void            SetMyHeightLeRi(Size &aNewSize);
-    void            UseSplitterInitPos();
 
                     DECL_LINK( SetSelectionHdl, ListBox&, void );
                     DECL_LINK( SetSelectionClickHdl, Button*, void );
                     DECL_LINK( SelHdl, ListBox&, void );
-                    DECL_LINK( SetSplitHdl, ScPrivatSplit&, void );
-                    DECL_LINK( TimerHdl, Idle*, void );
-
-protected:
-
-    virtual void    Resize() override;
-    void            SetSize();
-    virtual void    StateChanged( StateChangedType nStateChange ) override;
 
 public:
-                    ScFunctionWin(vcl::Window* pParent, const ResId& rResId);
+    ScFunctionWin(vcl::Window* pParent, const ResId& rResId);
 
-                    virtual ~ScFunctionWin() override;
+    virtual ~ScFunctionWin() override;
     virtual void    dispose() override;
 
     void            InitLRUList();


More information about the Libreoffice-commits mailing list