[Libreoffice-commits] core.git: include/vcl vcl/source
Caolán McNamara
caolanm at redhat.com
Thu Oct 5 07:51:51 UTC 2017
include/vcl/dialog.hxx | 1 +
vcl/source/window/dialog.cxx | 19 +++++++++++++------
2 files changed, 14 insertions(+), 6 deletions(-)
New commits:
commit f561531b69ae4870eaa9648f7c104cabcd0a7fa0
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Oct 4 21:14:06 2017 +0100
Related: tdf#112063 validation dialog legitimally changes modality
so to keep tdf#112063 working as with...
commit e66c9aa362c1e8729d76090023960610321b14f3
Author: Caolán McNamara <caolanm at redhat.com>
Date: Fri Sep 1 16:23:20 2017 +0100
Related: tdf#112063 unsetting and resetting gtk modality is a problem
for gtk3, so just set it on execute and no need to unset and reset it
for whatever vcl nuttiness the existing code is doing
then let the proper calls to SetModalInputMode call the frame modality switch
and the hackery vcl calls the underlying vcl-specific body as ImplSetModalInputMode
Change-Id: I853ca50e0d9830ca7ba3077e243ccdee6e84e696
Reviewed-on: https://gerrit.libreoffice.org/43142
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/include/vcl/dialog.hxx b/include/vcl/dialog.hxx
index 6cea3b193ec2..1ff5136fb41a 100644
--- a/include/vcl/dialog.hxx
+++ b/include/vcl/dialog.hxx
@@ -157,6 +157,7 @@ public:
private:
bool ImplStartExecuteModal();
static void ImplEndExecuteModal();
+ void ImplSetModalInputMode(bool bModal);
public:
// Dialog::Execute replacement API
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 85abcd4c5238..c6d54e3de38a 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -629,8 +629,8 @@ bool Dialog::EventNotify( NotifyEvent& rNEvt )
// have re-enabled input for our parent
if( mbInExecute && mbModalMode )
{
- SetModalInputMode( false );
- SetModalInputMode( true );
+ ImplSetModalInputMode( false );
+ ImplSetModalInputMode( true );
// #93022# def-button might have changed after show
if( !mnMousePositioned )
@@ -825,7 +825,6 @@ bool Dialog::ImplStartExecuteModal()
GetParent()->CompatNotify( aNEvt );
}
mbInExecute = true;
- ImplGetFrame()->SetModal(true);
SetModalInputMode(true);
// FIXME: no layouting, workaround some clipping issues
@@ -1097,7 +1096,6 @@ void Dialog::EndDialog( long nResult )
if ( mbInExecute )
{
SetModalInputMode(false);
- ImplGetFrame()->SetModal(false);
// remove dialog from the list of dialogs which are being executed
ImplSVData* pSVData = ImplGetSVData();
@@ -1185,6 +1183,15 @@ void Dialog::SetModalInputMode( bool bModal )
if ( bModal == mbModalMode )
return;
+ ImplGetFrame()->SetModal(bModal);
+ ImplSetModalInputMode(bModal);
+}
+
+void Dialog::ImplSetModalInputMode( bool bModal )
+{
+ if ( bModal == mbModalMode )
+ return;
+
mbModalMode = bModal;
if ( bModal )
{
@@ -1232,8 +1239,8 @@ void Dialog::SetModalInputMode( bool bModal )
( pPrevModalDlg == mpPrevExecuteDlg.get()
|| !pPrevModalDlg->IsWindowOrChild( this, true ) ) )
{
- mpPrevExecuteDlg->SetModalInputMode( false );
- mpPrevExecuteDlg->SetModalInputMode( true );
+ mpPrevExecuteDlg->ImplSetModalInputMode( false );
+ mpPrevExecuteDlg->ImplSetModalInputMode( true );
}
}
}
More information about the Libreoffice-commits
mailing list