vcl/inc/qt5/QtInstanceWidget.hxx |    2 +-
 vcl/qt5/QtInstanceWidget.cxx     |   27 +++++++++++++++++++++++----
 2 files changed, 24 insertions(+), 5 deletions(-)

New commits:
commit a8d894be5d6f39b9dde6f144858f58bb1081eb12
Author:     Michael Weghorn <[email protected]>
AuthorDate: Tue Aug 6 17:34:03 2024 +0200
Commit:     Michael Weghorn <[email protected]>
CommitDate: Wed Aug 7 07:11:39 2024 +0200

    tdf#130857 qt weld: Implement QtInstanceWidget::{get,is}_visible
    
    Implement according to the comments in include/vcl/weld.hxx:
    
        // return if this widget's visibility is true
        virtual bool get_visible() const = 0;
    
        // return if this widget's visibility and that of all its parents is 
true
        virtual bool is_visible() const = 0;
    
    Change-Id: Ic3a6193b04094331ec3818620c078269409c4fad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171555
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/qt5/QtInstanceWidget.cxx b/vcl/qt5/QtInstanceWidget.cxx
index 9999bf236ee8..602b278e8eb7 100644
--- a/vcl/qt5/QtInstanceWidget.cxx
+++ b/vcl/qt5/QtInstanceWidget.cxx
@@ -27,9 +27,20 @@ bool QtInstanceWidget::get_sensitive() const
     return m_pWidget->isEnabled();
 }
 
-bool QtInstanceWidget::get_visible() const { return true; }
+bool QtInstanceWidget::get_visible() const
+{
+    assert(m_pWidget);
+    return m_pWidget->isVisible();
+}
 
-bool QtInstanceWidget::is_visible() const { return true; }
+bool QtInstanceWidget::is_visible() const
+{
+    assert(m_pWidget);
+
+    QWidget* pTopLevel = m_pWidget->topLevelWidget();
+    assert(pTopLevel);
+    return m_pWidget->isVisibleTo(pTopLevel) && pTopLevel->isVisible();
+}
 
 void QtInstanceWidget::set_can_focus(bool) {}
 
commit 0d8d95cadf4ead4418bdae5bc519a944a2fae260
Author:     Michael Weghorn <[email protected]>
AuthorDate: Tue Aug 6 15:45:11 2024 +0200
Commit:     Michael Weghorn <[email protected]>
CommitDate: Wed Aug 7 07:11:32 2024 +0200

    tdf#130857 qt weld: Implement QtInstanceWidget::{g,s}et_sensitive
    
    In a quick test, this makes the "More" button in the dialog
    from the tdf#162351 use case to become insensitive (i.e. greyed
    out) as expected with this additional local change applied for
    testing:
    
        diff --git a/dbaccess/source/ui/dlg/sqlmessage.cxx 
b/dbaccess/source/ui/dlg/sqlmessage.cxx
        index 07891f773cfd..ad06210c8149 100644
        --- a/dbaccess/source/ui/dlg/sqlmessage.cxx
        +++ b/dbaccess/source/ui/dlg/sqlmessage.cxx
        @@ -509,6 +509,7 @@ void OSQLMessageBox::impl_addDetailsButton()
                 
m_xDialog->add_button(GetStandardText(StandardButtonType::More), RET_MORE);
                 
m_xMoreButton.reset(m_xDialog->weld_widget_for_response(RET_MORE));
                 m_xMoreButton->connect_clicked(LINK(this, OSQLMessageBox, 
ButtonClickHdl));
        +        m_xMoreButton->set_sensitive(false);
             }
         }
    
    Change-Id: I0b7a21364eddb707435a796c54b274ff438f8063
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171553
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/qt5/QtInstanceWidget.hxx b/vcl/inc/qt5/QtInstanceWidget.hxx
index 5a8feb35d8e5..ed0a41ac1c0b 100644
--- a/vcl/inc/qt5/QtInstanceWidget.hxx
+++ b/vcl/inc/qt5/QtInstanceWidget.hxx
@@ -28,7 +28,7 @@ public:
 
     QWidget* getQWidget() const { return m_pWidget; }
 
-    virtual void set_sensitive(bool) override;
+    virtual void set_sensitive(bool bSensitive) override;
 
     virtual bool get_sensitive() const override;
 
diff --git a/vcl/qt5/QtInstanceWidget.cxx b/vcl/qt5/QtInstanceWidget.cxx
index e2990c2d4199..9999bf236ee8 100644
--- a/vcl/qt5/QtInstanceWidget.cxx
+++ b/vcl/qt5/QtInstanceWidget.cxx
@@ -15,9 +15,17 @@ QtInstanceWidget::QtInstanceWidget(QWidget* pWidget)
     assert(pWidget);
 }
 
-void QtInstanceWidget::set_sensitive(bool) {}
+void QtInstanceWidget::set_sensitive(bool bSensitive)
+{
+    assert(m_pWidget);
+    m_pWidget->setEnabled(bSensitive);
+}
 
-bool QtInstanceWidget::get_sensitive() const { return true; }
+bool QtInstanceWidget::get_sensitive() const
+{
+    assert(m_pWidget);
+    return m_pWidget->isEnabled();
+}
 
 bool QtInstanceWidget::get_visible() const { return true; }
 

Reply via email to