sw/source/ui/misc/contentcontroldlg.cxx     |   40 ++++++++++++++++++++++++++++
 sw/source/uibase/inc/contentcontroldlg.hxx  |    1 
 sw/uiconfig/swriter/ui/contentcontroldlg.ui |    4 ++
 3 files changed, 45 insertions(+)

New commits:
commit e9bee595fdff989b78abb3ebf27efbe9af543eca
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Wed May 18 17:00:36 2022 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu May 19 17:07:28 2022 +0200

    sw content controls, dropdown: disable NOP buttons in the property dialog
    
    Rename, delete, move up & move down does nothing initially, disable the
    buttons when their event handler would just do an early return to make
    this less confusing.
    
    Change-Id: I4cfb9750d07b4686440c05901ef72e8ce4de961e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134538
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/sw/source/ui/misc/contentcontroldlg.cxx 
b/sw/source/ui/misc/contentcontroldlg.cxx
index 9e5902149720..49157fdec606 100644
--- a/sw/source/ui/misc/contentcontroldlg.cxx
+++ b/sw/source/ui/misc/contentcontroldlg.cxx
@@ -44,6 +44,7 @@ SwContentControlDlg::SwContentControlDlg(weld::Window* 
pParent, SwWrtShell& rWrt
     , m_xMoveDownBtn(m_xBuilder->weld_button("movedown"))
     , m_xOk(m_xBuilder->weld_button("ok"))
 {
+    m_xListItems->connect_changed(LINK(this, SwContentControlDlg, 
SelectionChangedHdl));
     m_xOk->connect_clicked(LINK(this, SwContentControlDlg, OkHdl));
 
     // Only 2 items would be visible by default.
@@ -245,4 +246,43 @@ IMPL_LINK_NOARG(SwContentControlDlg, MoveDownHdl, 
weld::Button&, void)
     m_xListItems->select(nRow);
 }
 
+IMPL_LINK_NOARG(SwContentControlDlg, SelectionChangedHdl, weld::TreeView&, 
void)
+{
+    if (!m_xListItems->has_focus())
+    {
+        return;
+    }
+
+    int nRow = m_xListItems->get_selected_index();
+    if (nRow < 0)
+    {
+        m_xRenameBtn->set_sensitive(false);
+        m_xDeleteBtn->set_sensitive(false);
+    }
+    else
+    {
+        m_xRenameBtn->set_sensitive(true);
+        m_xDeleteBtn->set_sensitive(true);
+    }
+
+    if (nRow <= 0)
+    {
+        m_xMoveUpBtn->set_sensitive(false);
+    }
+    else
+    {
+        m_xMoveUpBtn->set_sensitive(true);
+    }
+
+    int nEndPos = m_xListItems->n_children() - 1;
+    if (nRow < 0 || nRow >= nEndPos)
+    {
+        m_xMoveDownBtn->set_sensitive(false);
+    }
+    else
+    {
+        m_xMoveDownBtn->set_sensitive(true);
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/inc/contentcontroldlg.hxx 
b/sw/source/uibase/inc/contentcontroldlg.hxx
index 642c7d078fe5..b6a42860e073 100644
--- a/sw/source/uibase/inc/contentcontroldlg.hxx
+++ b/sw/source/uibase/inc/contentcontroldlg.hxx
@@ -52,6 +52,7 @@ class SwContentControlDlg final : public SfxDialogController
     DECL_LINK(DeleteHdl, weld::Button&, void);
     DECL_LINK(MoveUpHdl, weld::Button&, void);
     DECL_LINK(MoveDownHdl, weld::Button&, void);
+    DECL_LINK(SelectionChangedHdl, weld::TreeView&, void);
     DECL_LINK(OkHdl, weld::Button&, void);
 
 public:
diff --git a/sw/uiconfig/swriter/ui/contentcontroldlg.ui 
b/sw/uiconfig/swriter/ui/contentcontroldlg.ui
index 815d0f14ef35..8190317048ca 100644
--- a/sw/uiconfig/swriter/ui/contentcontroldlg.ui
+++ b/sw/uiconfig/swriter/ui/contentcontroldlg.ui
@@ -214,6 +214,7 @@
               <object class="GtkButton" id="modify">
                 <property name="label" translatable="yes" 
context="contentcontordlg|modify">Modify</property>
                 <property name="visible">True</property>
+                <property name="sensitive">False</property>
                 <property name="can-focus">True</property>
                 <property name="receives-default">True</property>
               </object>
@@ -228,6 +229,7 @@
               <object class="GtkButton" id="remove">
                 <property name="label" translatable="yes" 
context="contentcontordlg|remove">Remove</property>
                 <property name="visible">True</property>
+                <property name="sensitive">False</property>
                 <property name="can-focus">True</property>
                 <property name="receives-default">True</property>
               </object>
@@ -242,6 +244,7 @@
               <object class="GtkButton" id="moveup">
                 <property name="label" translatable="yes" 
context="contentcontordlg|moveup">Move Up</property>
                 <property name="visible">True</property>
+                <property name="sensitive">False</property>
                 <property name="can-focus">True</property>
                 <property name="receives-default">True</property>
               </object>
@@ -256,6 +259,7 @@
               <object class="GtkButton" id="movedown">
                 <property name="label" translatable="yes" 
context="contentcontordlg|movedown">Move Down</property>
                 <property name="visible">True</property>
+                <property name="sensitive">False</property>
                 <property name="can-focus">True</property>
                 <property name="receives-default">True</property>
               </object>

Reply via email to