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; }
