Kaydet (Commit) 389db2b4 authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: tdf#118572 ensure basic error dialog blocks any other dialog

if a dialog is already running, disable input to it until this
error dialog is acknowledged. The other dialog might be running
from the script which has the error.

Change-Id: I10c437a25bd7c91d37eeb8241bef10709767e499
Reviewed-on: https://gerrit.libreoffice.org/59567
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst e5f6be49
......@@ -622,7 +622,15 @@ bool ModulWindow::BasicErrorHdl( StarBASIC const * pBasic )
// #i47002#
Reference< awt::XWindow > xWindow = VCLUnoHelper::GetInterface( this );
// tdf#118572 make a currently running dialog, regardless of what its modal
// to, insensitive to user input until after this error dialog goes away.
auto xDialog = Dialog::GetMostRecentExecutingDialog();
const bool bToggleEnableInput = xDialog && xDialog->IsInputEnabled();
if (bToggleEnableInput)
xDialog->EnableInput(false);
ErrorHandler::HandleError(StarBASIC::GetErrorCode(), GetFrameWeld());
if (bToggleEnableInput)
xDialog->EnableInput(true);
// #i47002#
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow );
......
......@@ -167,6 +167,9 @@ public:
void EndDialog( long nResult = 0 );
static void EndAllDialogs( vcl::Window const * pParent );
// returns the most recent of the currently executing modal dialogs
static VclPtr<Dialog> GetMostRecentExecutingDialog();
void GetDrawWindowBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
......
......@@ -1131,6 +1131,15 @@ void Dialog::EndAllDialogs( vcl::Window const * pParent )
}
}
VclPtr<Dialog> Dialog::GetMostRecentExecutingDialog()
{
ImplSVData* pSVData = ImplGetSVData();
auto& rExecuteDialogs = pSVData->maWinData.mpExecuteDialogs;
if (!rExecuteDialogs.empty())
return rExecuteDialogs.back();
return nullptr;
}
void Dialog::SetModalInputMode( bool bModal )
{
if ( bModal == mbModalMode )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment