[Libreoffice-commits] core.git: basctl/source basctl/uiconfig include/vcl solenv/sanitizers vcl/source vcl/unx

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Sep 20 07:56:12 UTC 2018


 basctl/source/basicide/baside2.cxx               |    6 
 basctl/source/basicide/baside2b.cxx              |   10 -
 basctl/source/basicide/brkdlg.cxx                |  175 ++++++++++-------------
 basctl/source/basicide/brkdlg.hxx                |   33 +---
 basctl/uiconfig/basicide/ui/managebreakpoints.ui |   87 +++++++++--
 include/vcl/weld.hxx                             |    8 -
 solenv/sanitizers/ui/modules/BasicIDE.suppr      |    1 
 vcl/source/app/salvtables.cxx                    |    6 
 vcl/source/window/builder.cxx                    |    2 
 vcl/unx/gtk3/gtk3gtkinst.cxx                     |    7 
 10 files changed, 202 insertions(+), 133 deletions(-)

New commits:
commit 3f73733f7df6393be773e66e445eb0a86e9a9377
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Sep 19 09:52:19 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Sep 20 09:55:43 2018 +0200

    weld BreakPointDialog
    
    Change-Id: Icecef8b0b939c5d87bdf1bb781731df8fc4419b5
    Reviewed-on: https://gerrit.libreoffice.org/60756
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx
index 7518a7b4a67e..a10f1b9ba34b 100644
--- a/basctl/source/basicide/baside2.cxx
+++ b/basctl/source/basicide/baside2.cxx
@@ -588,16 +588,14 @@ void ModulWindow::BasicToggleBreakPointEnabled()
     }
 }
 
-
 void ModulWindow::ManageBreakPoints()
 {
     BreakPointWindow& rBrkWin = GetBreakPointWindow();
-    ScopedVclPtrInstance< BreakPointDialog > aBrkDlg( &rBrkWin, GetBreakPoints() );
-    aBrkDlg->Execute();
+    BreakPointDialog aBrkDlg(rBrkWin.GetFrameWeld(), GetBreakPoints());
+    aBrkDlg.run();
     rBrkWin.Invalidate();
 }
 
-
 bool ModulWindow::BasicErrorHdl( StarBASIC const * pBasic )
 {
     GetShell()->GetViewFrame()->ToTop();
diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index bcd09142536c..f2ccbc6e3812 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -1469,9 +1469,9 @@ void BreakPointWindow::Command( const CommandEvent& rCEvt )
             }
             else if (sCommand == "properties")
             {
-                ScopedVclPtrInstance<BreakPointDialog> aBrkDlg(this, GetBreakPoints());
-                aBrkDlg->SetCurrentBreakPoint( *pBrk );
-                aBrkDlg->Execute();
+                BreakPointDialog aBrkDlg(GetFrameWeld(), GetBreakPoints());
+                aBrkDlg.SetCurrentBreakPoint( *pBrk );
+                aBrkDlg.run();
                 Invalidate();
             }
         }
@@ -1481,8 +1481,8 @@ void BreakPointWindow::Command( const CommandEvent& rCEvt )
             OString sCommand = xBrkListMenu->GetItemIdent(xBrkListMenu->Execute(this, aPos));
             if (sCommand == "manage")
             {
-                ScopedVclPtrInstance< BreakPointDialog > aBrkDlg( this, GetBreakPoints() );
-                aBrkDlg->Execute();
+                BreakPointDialog aBrkDlg(GetFrameWeld(), GetBreakPoints());
+                aBrkDlg.run();
                 Invalidate();
             }
         }
diff --git a/basctl/source/basicide/brkdlg.cxx b/basctl/source/basicide/brkdlg.cxx
index 53be6215bd78..fb34de153aa8 100644
--- a/basctl/source/basicide/brkdlg.cxx
+++ b/basctl/source/basicide/brkdlg.cxx
@@ -61,46 +61,45 @@ bool lcl_ParseText(OUString const &rText, size_t& rLineNr )
 
 } // namespace
 
-BreakPointDialog::BreakPointDialog( vcl::Window* pParent, BreakPointList& rBrkPntList )
-    : ModalDialog(pParent, "ManageBreakpointsDialog",
-        "modules/BasicIDE/ui/managebreakpoints.ui")
+BreakPointDialog::BreakPointDialog(weld::Window* pParent, BreakPointList& rBrkPntList)
+    : GenericDialogController(pParent, "modules/BasicIDE/ui/managebreakpoints.ui", "ManageBreakpointsDialog")
     , m_rOriginalBreakPointList(rBrkPntList)
     , m_aModifiedBreakPointList(rBrkPntList)
+    , m_xComboBox(m_xBuilder->weld_entry_tree_view("entriesgrid", "entries", "entrieslist"))
+    , m_xOKButton(m_xBuilder->weld_button("ok"))
+    , m_xNewButton(m_xBuilder->weld_button("new"))
+    , m_xDelButton(m_xBuilder->weld_button("delete"))
+    , m_xCheckBox(m_xBuilder->weld_check_button("active"))
+    , m_xNumericField(m_xBuilder->weld_spin_button("pass-nospin"))
 {
-    get(m_pComboBox, "entries");
-    m_pComboBox->set_height_request(m_pComboBox->GetTextHeight() * 12);
-    m_pComboBox->set_width_request(m_pComboBox->approximate_char_width() * 32);
-    get(m_pOKButton, "ok");
-    get(m_pNewButton, "new");
-    get(m_pDelButton, "delete");
-    get(m_pCheckBox, "active");
-    get(m_pNumericField, "pass-nospin");
-
-    m_pComboBox->SetUpdateMode(false);
+    m_xComboBox->set_size_request(m_xComboBox->get_approximate_digit_width() * 20, -1);
+    m_xComboBox->set_height_request_by_rows(12);
+
+    m_xComboBox->freeze();
     for ( size_t i = 0, n = m_aModifiedBreakPointList.size(); i < n; ++i )
     {
         BreakPoint& rBrk = m_aModifiedBreakPointList.at( i );
         OUString aEntryStr( "# " + OUString::number(rBrk.nLine) );
-        m_pComboBox->InsertEntry( aEntryStr );
+        m_xComboBox->append_text(aEntryStr);
     }
-    m_pComboBox->SetUpdateMode(true);
+    m_xComboBox->thaw();
+
+    m_xOKButton->connect_clicked(LINK(this, BreakPointDialog, ButtonHdl));
+    m_xNewButton->connect_clicked(LINK(this, BreakPointDialog, ButtonHdl));
+    m_xDelButton->connect_clicked(LINK(this, BreakPointDialog, ButtonHdl));
 
-    m_pOKButton->SetClickHdl( LINK( this, BreakPointDialog, ButtonHdl ) );
-    m_pNewButton->SetClickHdl( LINK( this, BreakPointDialog, ButtonHdl ) );
-    m_pDelButton->SetClickHdl( LINK( this, BreakPointDialog, ButtonHdl ) );
+    m_xCheckBox->connect_toggled(LINK(this, BreakPointDialog, CheckBoxHdl));
+    m_xComboBox->connect_changed(LINK(this, BreakPointDialog, EditModifyHdl));
+    m_xComboBox->connect_row_activated(LINK(this, BreakPointDialog, TreeModifyHdl));
+    m_xComboBox->grab_focus();
 
-    m_pCheckBox->SetClickHdl( LINK( this, BreakPointDialog, CheckBoxHdl ) );
-    m_pComboBox->SetSelectHdl( LINK( this, BreakPointDialog, ComboBoxHighlightHdl ) );
-    m_pComboBox->SetModifyHdl( LINK( this, BreakPointDialog, EditModifyHdl ) );
-    m_pComboBox->GrabFocus();
+    m_xNumericField->set_range(0, 0x7FFFFFFF);
+    m_xNumericField->set_increments(1, 10);
+    m_xNumericField->connect_value_changed(LINK(this, BreakPointDialog, FieldModifyHdl));
 
-    m_pNumericField->SetMin( 0 );
-    m_pNumericField->SetMax( 0x7FFFFFFF );
-    m_pNumericField->SetSpinSize( 1 );
-    m_pNumericField->SetStrictFormat(true);
-    m_pNumericField->SetModifyHdl( LINK( this, BreakPointDialog, EditModifyHdl ) );
+    if (m_xComboBox->get_count())
+        m_xComboBox->set_active(0);
 
-    m_pComboBox->SetText( m_pComboBox->GetEntry( 0 ) );
     if (m_aModifiedBreakPointList.size())
         UpdateFields( m_aModifiedBreakPointList.at( 0 ) );
 
@@ -109,24 +108,12 @@ BreakPointDialog::BreakPointDialog( vcl::Window* pParent, BreakPointList& rBrkPn
 
 BreakPointDialog::~BreakPointDialog()
 {
-    disposeOnce();
-}
-
-void BreakPointDialog::dispose()
-{
-    m_pComboBox.clear();
-    m_pOKButton.clear();
-    m_pNewButton.clear();
-    m_pDelButton.clear();
-    m_pNumericField.clear();
-    m_pCheckBox.clear();
-    ModalDialog::dispose();
 }
 
 void BreakPointDialog::SetCurrentBreakPoint( BreakPoint const & rBrk )
 {
     OUString aStr( "# " + OUString::number(rBrk.nLine) );
-    m_pComboBox->SetText( aStr );
+    m_xComboBox->set_entry_text(aStr);
     UpdateFields( rBrk );
 }
 
@@ -136,111 +123,115 @@ void BreakPointDialog::CheckButtons()
     // number that is not already present in the combo box list; otherwise
     // "OK" and "Delete" buttons are enabled:
     size_t nLine;
-    if (lcl_ParseText(m_pComboBox->GetText(), nLine)
+    if (lcl_ParseText(m_xComboBox->get_active_text(), nLine)
         && m_aModifiedBreakPointList.FindBreakPoint(nLine) == nullptr)
     {
-        m_pNewButton->Enable();
-        m_pOKButton->Disable();
-        m_pDelButton->Disable();
+        m_xNewButton->set_sensitive(true);
+        m_xOKButton->set_sensitive(false);
+        m_xDelButton->set_sensitive(false);
+        m_xDelButton->set_has_default(false);
+        m_xNewButton->set_has_default(true);
     }
     else
     {
-        m_pNewButton->Disable();
-        m_pOKButton->Enable();
-        m_pDelButton->Enable();
+        m_xNewButton->set_sensitive(false);
+        m_xOKButton->set_sensitive(true);
+        m_xDelButton->set_sensitive(true);
+        m_xNewButton->set_has_default(false);
+        m_xDelButton->set_has_default(true);
     }
 }
 
-IMPL_LINK( BreakPointDialog, CheckBoxHdl, Button *, pButton, void )
+IMPL_LINK(BreakPointDialog, CheckBoxHdl, weld::ToggleButton&, rButton, void)
 {
-    ::CheckBox * pChkBx = static_cast<::CheckBox*>(pButton);
     BreakPoint* pBrk = GetSelectedBreakPoint();
     if (pBrk)
-        pBrk->bEnabled = pChkBx->IsChecked();
+        pBrk->bEnabled = rButton.get_active();
 }
 
-IMPL_LINK( BreakPointDialog, ComboBoxHighlightHdl, ComboBox&, rBox, void )
+IMPL_LINK(BreakPointDialog, EditModifyHdl, weld::ComboBox&, rBox, void)
 {
-    m_pNewButton->Disable();
-    m_pOKButton->Enable();
-    m_pDelButton->Enable();
+    CheckButtons();
 
-    sal_Int32 nEntry = rBox.GetEntryPos( rBox.GetText() );
+    int nEntry = rBox.find_text(rBox.get_active_text());
+    if (nEntry == -1)
+        return;
     BreakPoint& rBrk = m_aModifiedBreakPointList.at( nEntry );
     UpdateFields( rBrk );
 }
 
-
-IMPL_LINK( BreakPointDialog, EditModifyHdl, Edit&, rEdit, void )
+IMPL_LINK(BreakPointDialog, FieldModifyHdl, weld::SpinButton&, rEdit, void)
 {
-    if (&rEdit == m_pComboBox)
-        CheckButtons();
-    else if (&rEdit == m_pNumericField)
-    {
-        BreakPoint* pBrk = GetSelectedBreakPoint();
-        if (pBrk)
-            pBrk->nStopAfter = rEdit.GetText().toInt32();
-    }
+    BreakPoint* pBrk = GetSelectedBreakPoint();
+    if (pBrk)
+        pBrk->nStopAfter = rEdit.get_value();
 }
 
+IMPL_LINK_NOARG(BreakPointDialog, TreeModifyHdl, weld::TreeView&, void)
+{
+    if (!m_xDelButton->get_sensitive())
+        return;
+    ButtonHdl(*m_xDelButton);
+}
 
-IMPL_LINK( BreakPointDialog, ButtonHdl, Button *, pButton, void )
+IMPL_LINK(BreakPointDialog, ButtonHdl, weld::Button&, rButton, void)
 {
-    if (pButton == m_pOKButton)
+    if (&rButton == m_xOKButton.get())
     {
         m_rOriginalBreakPointList.transfer(m_aModifiedBreakPointList);
-        EndDialog( 1 );
+        m_xDialog->response(RET_OK);
     }
-    else if (pButton == m_pNewButton)
+    else if (&rButton == m_xNewButton.get())
     {
         // keep checkbox in mind!
-        OUString aText( m_pComboBox->GetText() );
+        OUString aText(m_xComboBox->get_active_text());
         size_t nLine;
         bool bValid = lcl_ParseText( aText, nLine );
         if ( bValid )
         {
             BreakPoint aBrk( nLine );
-            aBrk.bEnabled = m_pCheckBox->IsChecked();
-            aBrk.nStopAfter = static_cast<size_t>(m_pNumericField->GetValue());
+            aBrk.bEnabled = m_xCheckBox->get_active();
+            aBrk.nStopAfter = static_cast<size_t>(m_xNumericField->get_value());
             m_aModifiedBreakPointList.InsertSorted( aBrk );
             OUString aEntryStr( "# " + OUString::number(aBrk.nLine) );
-            m_pComboBox->InsertEntry( aEntryStr );
+            m_xComboBox->append_text(aEntryStr);
             if (SfxDispatcher* pDispatcher = GetDispatcher())
                 pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
         }
         else
         {
-            m_pComboBox->SetText( aText );
-            m_pComboBox->GrabFocus();
+            m_xComboBox->set_active_text(aText);
+            m_xComboBox->grab_focus();
         }
         CheckButtons();
     }
-    else if (pButton == m_pDelButton)
+    else if (&rButton == m_xDelButton.get())
     {
-        sal_Int32 nEntry = m_pComboBox->GetEntryPos( m_pComboBox->GetText() );
-        m_aModifiedBreakPointList.remove( nEntry );
-        m_pComboBox->RemoveEntryAt(nEntry);
-        if ( nEntry && nEntry >= m_pComboBox->GetEntryCount() )
-            nEntry--;
-        m_pComboBox->SetText( m_pComboBox->GetEntry( nEntry ) );
-        if (SfxDispatcher* pDispatcher = GetDispatcher())
-            pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
-        CheckButtons();
+        int nEntry = m_xComboBox->find_text(m_xComboBox->get_active_text());
+        if (nEntry != -1)
+        {
+            m_aModifiedBreakPointList.remove(nEntry);
+            m_xComboBox->remove(nEntry);
+            if (nEntry && nEntry >= m_xComboBox->get_count())
+                nEntry--;
+            m_xComboBox->set_active_text(m_xComboBox->get_text(nEntry));
+            if (SfxDispatcher* pDispatcher = GetDispatcher())
+                pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
+            CheckButtons();
+        }
     }
 }
 
-
 void BreakPointDialog::UpdateFields( BreakPoint const & rBrk )
 {
-    m_pCheckBox->Check( rBrk.bEnabled );
-    m_pNumericField->SetValue( rBrk.nStopAfter );
+    m_xCheckBox->set_active(rBrk.bEnabled);
+    m_xNumericField->set_value(rBrk.nStopAfter);
 }
 
-
 BreakPoint* BreakPointDialog::GetSelectedBreakPoint()
 {
-    sal_Int32 nEntry = m_pComboBox->GetEntryPos( m_pComboBox->GetText() );
-    if (nEntry == LISTBOX_ENTRY_NOTFOUND)
+    int nEntry = m_xComboBox->find_text(m_xComboBox->get_active_text());
+    if (nEntry == -1)
         return nullptr;
     return &m_aModifiedBreakPointList.at( nEntry );
 }
diff --git a/basctl/source/basicide/brkdlg.hxx b/basctl/source/basicide/brkdlg.hxx
index f4cd8f684f94..48b91cf8a6e6 100644
--- a/basctl/source/basicide/brkdlg.hxx
+++ b/basctl/source/basicide/brkdlg.hxx
@@ -20,39 +20,36 @@
 #ifndef INCLUDED_BASCTL_SOURCE_BASICIDE_BRKDLG_HXX
 #define INCLUDED_BASCTL_SOURCE_BASICIDE_BRKDLG_HXX
 
-#include <vcl/dialog.hxx>
-
-#include <vcl/button.hxx>
-#include <vcl/field.hxx>
+#include <vcl/weld.hxx>
 
 namespace basctl
 {
 
-class BreakPointDialog final : public ModalDialog
+class BreakPointDialog final : public weld::GenericDialogController
 {
-    VclPtr<ComboBox>       m_pComboBox;
-    VclPtr<OKButton>       m_pOKButton;
-    VclPtr<PushButton>     m_pNewButton;
-    VclPtr<PushButton>     m_pDelButton;
-    VclPtr<CheckBox>       m_pCheckBox;
-    VclPtr<NumericField>   m_pNumericField;
-
     BreakPointList & m_rOriginalBreakPointList;
     BreakPointList m_aModifiedBreakPointList;
 
+    std::unique_ptr<weld::EntryTreeView> m_xComboBox;
+    std::unique_ptr<weld::Button> m_xOKButton;
+    std::unique_ptr<weld::Button> m_xNewButton;
+    std::unique_ptr<weld::Button> m_xDelButton;
+    std::unique_ptr<weld::CheckButton> m_xCheckBox;
+    std::unique_ptr<weld::SpinButton> m_xNumericField;
+
     void            CheckButtons();
-    DECL_LINK( CheckBoxHdl, Button*, void );
-    DECL_LINK( ComboBoxHighlightHdl, ComboBox&, void );
-    DECL_LINK( EditModifyHdl, Edit&, void );
-    DECL_LINK( ButtonHdl, Button*, void );
+    DECL_LINK(CheckBoxHdl, weld::ToggleButton&, void);
+    DECL_LINK(EditModifyHdl, weld::ComboBox&, void);
+    DECL_LINK(FieldModifyHdl, weld::SpinButton&, void);
+    DECL_LINK(ButtonHdl, weld::Button&, void);
+    DECL_LINK(TreeModifyHdl, weld::TreeView&, void);
     void            UpdateFields( BreakPoint const & rBrk );
     BreakPoint*     GetSelectedBreakPoint();
 
 
 public:
-            BreakPointDialog( vcl::Window* pParent, BreakPointList& rBrkList );
+    BreakPointDialog(weld::Window* pParent, BreakPointList& rBrkList);
     virtual ~BreakPointDialog() override;
-    virtual void dispose() override;
 
     void    SetCurrentBreakPoint( BreakPoint const & rBrk );
 };
diff --git a/basctl/uiconfig/basicide/ui/managebreakpoints.ui b/basctl/uiconfig/basicide/ui/managebreakpoints.ui
index 42f939905957..ba7ca5bb2e00 100644
--- a/basctl/uiconfig/basicide/ui/managebreakpoints.ui
+++ b/basctl/uiconfig/basicide/ui/managebreakpoints.ui
@@ -1,13 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="basctl">
   <requires lib="gtk+" version="3.18"/>
-  <requires lib="LibreOffice" version="1.0"/>
+  <object class="GtkListStore" id="liststore1">
+    <columns>
+      <!-- column-name text -->
+      <column type="gchararray"/>
+      <!-- column-name id -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkEntryCompletion" id="entrycompletion1">
+    <property name="model">liststore1</property>
+    <property name="text_column">0</property>
+    <property name="inline_completion">True</property>
+    <property name="popup_completion">False</property>
+    <property name="popup_set_width">False</property>
+    <property name="popup_single_match">False</property>
+  </object>
   <object class="GtkDialog" id="ManageBreakpointsDialog">
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes" context="managebreakpoints|ManageBreakpointsDialog">Manage Breakpoints</property>
+    <property name="modal">True</property>
+    <property name="default_width">0</property>
+    <property name="default_height">0</property>
     <property name="type_hint">dialog</property>
+    <child>
+      <placeholder/>
+    </child>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
         <property name="can_focus">False</property>
@@ -23,7 +44,6 @@
                 <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="use_stock">True</property>
               </object>
@@ -39,7 +59,6 @@
                 <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="use_stock">True</property>
               </object>
@@ -55,7 +74,6 @@
                 <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="use_stock">True</property>
               </object>
@@ -140,19 +158,63 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="VclComboBoxText" id="entries">
+                      <object class="GtkGrid" id="entriesgrid">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="hexpand">True</property>
                         <property name="vexpand">True</property>
-                        <property name="has_entry">True</property>
-                        <property name="dropdown">False</property>
-                        <child internal-child="entry">
-                          <object class="GtkEntry" id="comboboxtext-entry">
+                        <property name="row_spacing">3</property>
+                        <child>
+                          <object class="GtkScrolledWindow">
+                            <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="hexpand">True</property>
                             <property name="vexpand">True</property>
+                            <property name="shadow_type">in</property>
+                            <child>
+                              <object class="GtkTreeView" id="entrieslist">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hexpand">True</property>
+                                <property name="vexpand">True</property>
+                                <property name="model">liststore1</property>
+                                <property name="headers_visible">False</property>
+                                <property name="headers_clickable">False</property>
+                                <property name="search_column">0</property>
+                                <property name="show_expanders">False</property>
+                                <child internal-child="selection">
+                                  <object class="GtkTreeSelection" id="treeview-selection1"/>
+                                </child>
+                                <child>
+                                  <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+                                    <child>
+                                      <object class="GtkCellRendererText" id="cellrenderertext1"/>
+                                      <attributes>
+                                        <attribute name="text">0</attribute>
+                                      </attributes>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="entries">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hexpand">True</property>
+                            <property name="activates_default">True</property>
+                            <property name="completion">entrycompletion1</property>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                          </packing>
                         </child>
                       </object>
                       <packing>
@@ -169,6 +231,7 @@
                           <object class="GtkSpinButton" id="pass-nospin">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
+                            <property name="activates_default">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
@@ -218,8 +281,8 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="0">new</action-widget>
-      <action-widget response="0">delete</action-widget>
+      <action-widget response="101">new</action-widget>
+      <action-widget response="102">delete</action-widget>
       <action-widget response="-5">ok</action-widget>
       <action-widget response="-6">cancel</action-widget>
     </action-widgets>
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 35a9658325e9..dc69721bb66e 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -59,6 +59,7 @@ public:
             hide();
     }
     virtual void set_size_request(int nWidth, int nHeight) = 0;
+    virtual Size get_size_request() const = 0;
     virtual Size get_preferred_size() const = 0;
     virtual float get_approximate_digit_width() const = 0;
     virtual int get_text_height() const = 0;
@@ -347,7 +348,11 @@ public:
     //by text
     virtual OUString get_text(int pos) const = 0;
     virtual int find_text(const OUString& rText) const = 0;
-    OUString get_selected_text() const { return get_text(get_selected_index()); }
+    OUString get_selected_text() const
+    {
+        int index = get_selected_index();
+        return index != -1 ? get_text(index) : OUString();
+    }
     void select_text(const OUString& rText) { select(find_text(rText)); }
     void remove_text(const OUString& rText) { remove(find_text(rText)); }
     std::vector<OUString> get_selected_rows_text() const
@@ -822,6 +827,7 @@ public:
     {
         m_xSpinButton->set_size_request(nWidth, nHeight);
     }
+    Size get_size_request() const { return m_xSpinButton->get_size_request(); }
     Size get_preferred_size() const { return m_xSpinButton->get_preferred_size(); }
     void connect_focus_in(const Link<Widget&, void>& rLink)
     {
diff --git a/solenv/sanitizers/ui/modules/BasicIDE.suppr b/solenv/sanitizers/ui/modules/BasicIDE.suppr
index 826e3007431b..6546c4d96a44 100644
--- a/solenv/sanitizers/ui/modules/BasicIDE.suppr
+++ b/solenv/sanitizers/ui/modules/BasicIDE.suppr
@@ -6,3 +6,4 @@ basctl/uiconfig/basicide/ui/defaultlanguage.ui://GtkLabel[@id='defined'] orphan-
 basctl/uiconfig/basicide/ui/defaultlanguage.ui://GtkLabel[@id='added'] orphan-label
 basctl/uiconfig/basicide/ui/defaultlanguage.ui://GtkLabel[@id='alttitle'] orphan-label
 basctl/uiconfig/basicide/ui/managelanguages.ui://GtkLabel[@id='label2'] orphan-label
+basctl/uiconfig/basicide/ui/managebreakpoints.ui://GtkEntry[@id='entries'] no-labelled-by
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 85d6740790d2..f68ac1b3b996 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -289,6 +289,12 @@ public:
         m_xWidget->set_height_request(nHeight);
     }
 
+    virtual Size get_size_request() const override
+    {
+        return Size(m_xWidget->get_width_request(),
+                    m_xWidget->get_height_request());
+    }
+
     virtual Size get_preferred_size() const override
     {
         return m_xWidget->get_preferred_size();
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 3bfff31b910e..395596b7f5d5 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -378,7 +378,7 @@ namespace weld
     void EntryTreeView::set_height_request_by_rows(int nRows)
     {
         int nHeight = nRows == -1 ? -1 : m_xTreeView->get_height_rows(nRows);
-        m_xTreeView->set_size_request(-1, nHeight);
+        m_xTreeView->set_size_request(m_xTreeView->get_size_request().Width(), nHeight);
     }
 }
 
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 4a564e894e37..3fbe2608f9c7 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1282,6 +1282,13 @@ public:
         gtk_widget_set_size_request(m_pWidget, nWidth, nHeight);
     }
 
+    virtual Size get_size_request() const override
+    {
+        int nWidth, nHeight;
+        gtk_widget_get_size_request(m_pWidget, &nWidth, &nHeight);
+        return Size(nWidth, nHeight);
+    }
+
     virtual Size get_preferred_size() const override
     {
         GtkRequisition size;


More information about the Libreoffice-commits mailing list