20#include <config_feature_desktop.h>
24#include <UIKit/UIKit.h>
28#include <com/sun/star/frame/theGlobalEventBroadcaster.hpp>
32#include <officecfg/Office/Common.hxx>
33#include <osl/diagnose.h>
40#include <rtl/bootstrap.hxx>
41#include <rtl/strbuf.hxx>
73 OUString aErrorStr(pDialog->
GetText());
78 sMessage = pMessDialog->get_primary_text();
93 if ( (pWindow->
GetType() == WindowType::RADIOBUTTON) ||
94 (pWindow->
GetType() == WindowType::CHECKBOX) ||
95 (pWindow->
GetType() == WindowType::TRISTATEBOX) ||
96 (pWindow->
GetType() == WindowType::PUSHBUTTON) )
99 if ( pWindow->
GetType() == WindowType::FIXEDTEXT )
113 (pNextWindow->
GetType() == WindowType::FIXEDTEXT) ||
114 (pNextWindow->
GetType() == WindowType::GROUPBOX) ||
115 (pNextWindow->
GetType() == WindowType::RADIOBUTTON) ||
116 (pNextWindow->
GetType() == WindowType::CHECKBOX) ||
117 (pNextWindow->
GetType() == WindowType::TRISTATEBOX) ||
118 (pNextWindow->
GetType() == WindowType::PUSHBUTTON));
136 if (pChild->
GetType() == WindowType::SCROLLWINDOW)
148 if (pParent == pTopLevel)
150 pLastChild = pParent;
164 if (pChild->
GetType() == WindowType::SCROLLWINDOW)
176 if (pParent == pTopLevel)
178 pLastChild = pParent;
220 if ( pWindow->
GetType() == WindowType::TABPAGE )
223 if (pParent && pParent->
GetType() == WindowType::TABCONTROL )
245 OUString aText = pChild->
GetText();
247 if ( aText != aNewText )
304 if ( pChild->
GetType() == WindowType::OKBUTTON )
319 if ( pChild->
GetType() == WindowType::CANCELBUTTON )
368 return aFind->second;
376 pOwnedButton.disposeAndClear();
404 Window::PixelInvalidate(pRectangle);
419 auto it = std::find_if(rExecuteDialogs.rbegin(), rExecuteDialogs.rend(),
421 return pParent->ImplGetFirstOverlapWindow() &&
422 pParent->ImplGetFirstOverlapWindow()->IsWindowOrChild(rDialogPtr, true) &&
423 rDialogPtr->IsReallyVisible() && rDialogPtr->IsEnabled() &&
424 rDialogPtr->IsInputEnabled() && !rDialogPtr->IsInModalMode(); });
425 if (it != rExecuteDialogs.rend())
436 pBorderWin->mpWindowImpl->mpClientWindow =
this;
485 pBorderWin->mpWindowImpl->mpClientWindow =
this;
558 OUString sShareLayer(
"$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/");
559 rtl::Bootstrap::expandMacros(sShareLayer);
629 css::uno::Reference< css::uno::XComponentContext > xContext(
631 css::uno::Reference<css::frame::XGlobalEventBroadcaster> xEventBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), css::uno::UNO_SET_THROW);
632 css::document::DocumentEvent aObject;
633 aObject.EventName =
"DialogClosed";
634 xEventBroadcaster->documentEventOccured(aObject);
639 if(
const vcl::ILibreOfficeKitNotifier* pNotifier =
GetLOKNotifier())
641 if (bTunnelingEnabled)
665 sal_uInt16 nKeyCode = aKeyCode.
GetCode();
722 return Size(std::max<tools::Long>(
w, 640 - 15),
723 std::max<tools::Long>(
h, 480 - 50));
734 const int n = std::min<CGFloat>([[UIScreen mainScreen] bounds].
size.width, [[UIScreen mainScreen] bounds].size.height);
763 if (bKitActive && bTunnelingEnabled)
765 std::vector<vcl::LOKPayloadItem> aItems;
766 aItems.emplace_back(
"type",
"dialog");
769 aItems.emplace_back(
"title",
GetText().toUtf8());
771 if (
const vcl::ILibreOfficeKitNotifier* pNotifier =
GetLOKNotifier())
778 vcl::ILibreOfficeKitNotifier* pViewShell =
mpDialogImpl->m_aInstallLOKNotifierHdl.Call(
nullptr);
803 if (pNotifier && bTunnelingEnabled)
805 std::vector<vcl::LOKPayloadItem> aPayload;
806 aPayload.emplace_back(
"title",
GetText().toUtf8());
807 pNotifier->notifyWindow(
GetLOKWindowId(),
"title_changed", aPayload);
822 if (pNotifier && bTunnelingEnabled)
824 std::vector<vcl::LOKPayloadItem> aPayload;
825 aPayload.emplace_back(
"title",
GetText().toUtf8());
858 pCustomCancelButton = pCancelButton;
860 pCustomCancelButton =
nullptr;
864 if (pCustomCancelButton)
866 pCustomCancelButton->
Click();
912 SAL_WARN(
"vcl",
"Dialog::StartExecuteModal() is called in Dialog::StartExecuteModal(): "
922 const bool bModal =
GetType() != WindowType::MODELESSDIALOG;
939 [](
const Dialog* pDialog) {
940 return pDialog->IsInSyncExecute();
945 SAL_WARN(
"lok.dialog",
"Dialog \"" <<
ImplGetDialogText(
this) <<
"\" is being synchronously executed over an existing synchronously executing dialog.");
951 <<
"\"cancelled in silent mode");
970 "Dialog::StartExecuteModal() - Parent not visible" );
972 "Dialog::StartExecuteModal() - Parent input disabled, use another parent to ensure modality!" );
974 "Dialog::StartExecuteModal() - Parent already modally disabled, use another parent to ensure modality!" );
992 if (!bKitActive && bModal)
998 css::uno::Reference< css::uno::XComponentContext > xContext(
1000 bool bForceFocusAndToFront(officecfg::Office::Common::View::NewDocumentHandling::ForceFocusAndToFront::get());
1002 Show(
true, showFlags);
1007 css::uno::Reference<css::frame::XGlobalEventBroadcaster> xEventBroadcaster(
1008 css::frame::theGlobalEventBroadcaster::get(xContext), css::uno::UNO_SET_THROW);
1009 css::document::DocumentEvent aObject;
1010 aObject.EventName =
"DialogExecute";
1011 xEventBroadcaster->documentEventOccured(aObject);
1017 bool bTunnelingEnabled =
mpDialogImpl->m_bLOKTunneling;
1020 if (
const vcl::ILibreOfficeKitNotifier* pNotifier =
GetLOKNotifier())
1026 std::vector<vcl::LOKPayloadItem> aItems;
1028 pNotifier->notifyWindow(
GetLOKWindowId(),
"size_changed", aItems);
1066 OSL_FAIL(
"Dialog::Execute() - Dialog destroyed in Execute()" );
1076 return static_cast<short>(nRet);
1080 SAL_WARN(
"vcl",
"Dialog::Execute() : missing mpDialogImpl " );
1088 const bool bModal =
GetType() != WindowType::MODELESSDIALOG;
1109 rExecuteDialogs.erase(std::remove_if(rExecuteDialogs.begin(), rExecuteDialogs.end(), [
this](
VclPtr<Dialog>& dialog){ return dialog.get() == this; }), rExecuteDialogs.end());
1117 const bool bModal =
GetType() != WindowType::MODELESSDIALOG;
1123 if(
const vcl::ILibreOfficeKitNotifier* pNotifier =
GetLOKNotifier())
1145 if( ( !pFrameParent && !pPrevFrameParent ) ||
1161 auto fn = std::move(
mpDialogImpl->maEndCtx.maEndDialogFn);
1181 std::shared_ptr<weld::DialogController> xOwnerDialogController = std::move(
mpDialogImpl->maEndCtx.mxOwnerDialogController);
1182 std::shared_ptr<weld::Dialog> xOwnerSelf = std::move(
mpDialogImpl->maEndCtx.mxOwnerSelf);
1184 xOwnerDialogController.reset();
1196 for (
auto it = rExecuteDialogs.rbegin(); it != rExecuteDialogs.rend(); ++it)
1210 pDialog->EnableInput();
1248 if (rExecuteDialogs.size() > 1)
1249 pPrevious = rExecuteDialogs[rExecuteDialogs.size() - 2];
1310 if ( pFocusControl )
1316 if ( !pFocusControl ||
1324 return pFocusControl;
1330 if ( pFocusControl )
1337 aImplWin->GetBorder( rLeftBorder, rTopBorder, rRightBorder, rBottomBorder );
1364 aImplWin->SetText(
GetText() );
1365 aImplWin->setPosSizePixel( aPos.X(), aPos.Y(), aSize.
Width(), aSize.
Height() );
1366 aImplWin->SetDisplayActive(
true );
1367 aImplWin->InitView();
1369 aImplWin->Draw( pDev, aPos );
1389 bool bTunnelingEnabled =
mpDialogImpl->m_bLOKTunneling;
1390 const vcl::ILibreOfficeKitNotifier* pNotifier =
GetLOKNotifier();
1391 if (pNotifier && bTunnelingEnabled)
1393 std::vector<vcl::LOKPayloadItem> aItems;
1395 pNotifier->notifyWindow(
GetLOKWindowId(),
"size_changed", aItems);
1401 if (rKey ==
"border-width")
1415 auto aFind = mpDialogImpl->maResponses.find(pButton);
1416 if (aFind == mpDialogImpl->maResponses.end())
1418 short nResponse = aFind->second;
1423 pFocusWin = pButton;
1433 if (bTransferOwnership)
1438 case WindowType::PUSHBUTTON:
1446 case WindowType::OKBUTTON:
1449 case WindowType::CANCELBUTTON:
1452 case WindowType::HELPBUTTON:
1456 SAL_WARN(
"vcl.layout",
"The type of widget " <<
1457 pButton->
GetHelpId() <<
" is currently not handled");
1465 std::map<VclPtr<vcl::Window>,
short> aResponses(
mpDialogImpl->maResponses);
1473 if (aResponses.find(pChild) != aResponses.end())
1475 switch (pChild->GetType())
1477 case WindowType::OKBUTTON:
1478 aResponses[pChild] =
RET_OK;
1480 case WindowType::CANCELBUTTON:
1483 case WindowType::HELPBUTTON:
1492 for (
const auto&
a : aResponses)
1494 if (
a.second == response)
1504 std::map<VclPtr<vcl::Window>,
short> aResponses(
mpDialogImpl->maResponses);
1512 if (aResponses.find(pChild) != aResponses.end())
1514 switch (pChild->GetType())
1516 case WindowType::OKBUTTON:
1517 aResponses[pChild] =
RET_OK;
1519 case WindowType::CANCELBUTTON:
1522 case WindowType::HELPBUTTON:
1531 for (
const auto&
a : aResponses)
1544 std::map<VclPtr<vcl::Window>,
short> aResponses(
mpDialogImpl->maResponses);
1552 if (aResponses.find(pChild) != aResponses.end())
1554 switch (pChild->GetType())
1556 case WindowType::OKBUTTON:
1557 aResponses[pChild] =
RET_OK;
1559 case WindowType::CANCELBUTTON:
1562 case WindowType::HELPBUTTON:
1571 for (
auto&
a : aResponses)
1573 if (
a.second == response)
1576 a.first->GrabFocus();
1602 if (
GetType() == WindowType::MODELESSDIALOG)
1604 css::uno::Reference< css::uno::XComponentContext > xContext(
1606 css::uno::Reference<css::frame::XGlobalEventBroadcaster> xEventBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), css::uno::UNO_SET_THROW);
1607 css::document::DocumentEvent aObject;
1608 aObject.EventName =
"ModelessDialogVisible";
1609 xEventBroadcaster->documentEventOccured(aObject);
1634 std::vector<VclPtr<vcl::Window>> aTopLevels;
1639 if (pCandidate->
GetType() == WindowType::BORDERWINDOW)
1643 pCandidate->
GetType() != WindowType::HELPTEXTWINDOW &&
1644 pCandidate->
GetType() != WindowType::FLOATINGWINDOW &&
1647 aTopLevels.push_back(pCandidate);
1651 for (
auto&
a : aTopLevels)
1654 a->ImplGetFrame()->NotifyModalHierarchy(
true);
1656 m_xImpl->m_aBusyStack.push(aTopLevels);
1662 for (
auto&
a :
m_xImpl->m_aBusyStack.top())
1664 if (
a->isDisposed())
1667 a->ImplGetFrame()->NotifyModalHierarchy(
false);
1674 return !
m_xImpl->m_aBusyStack.empty();
1687 if (!pActionArea->IsVisible())
1688 rJsonWriter.
put(
"collapsed",
"true");
1691 OUString sDialogId = OStringToOUString(
GetHelpId(), RTL_TEXTENCODING_ASCII_US);
1692 sal_Int32 nStartPos = sDialogId.lastIndexOf(
'/');
1693 nStartPos = nStartPos >= 0 ? nStartPos + 1 : 0;
1694 rJsonWriter.
put(
"dialogid", sDialogId.copy(nStartPos));
1697 auto aResponses = rJsonWriter.
startArray(
"responses");
1698 for (
const auto& rResponse :
mpDialogImpl->maResponses)
1701 rJsonWriter.
put(
"id", rResponse.first->get_id());
1702 rJsonWriter.
put(
"response", rResponse.second);
1708 rJsonWriter.
put(
"init_focus_id", pFocusControl->
get_id());
const MouseSettings & GetMouseSettings() const
const StyleSettings & GetStyleSettings() const
static OUString GetUIRootDir()
static void Yield()
Process the next event.
static SystemWindowFlags GetSystemWindowMode()
Get the system window mode of dialogs.
static DialogCancelMode GetDialogCancelMode()
Gets the dialog cancel mode for headless environments.
static vcl::Window * GetNextTopLevelWindow(vcl::Window const *pWindow)
Get the next top level window.
static vcl::Window * GetFocusWindow()
Get the currently focused window.
static bool IsQuit()
Has Quit() been called?
static vcl::Window * GetFirstTopLevelWindow()
Get the first top-level window of the application.
DataChangedEventType GetType() const
AllSettingsFlags GetFlags() const
static std::unique_ptr< UIObject > create(vcl::Window *pWindow)
static SAL_DLLPRIVATE vcl::Window * GetDefaultParent(WinBits nStyle)
void set_content_area(VclBox *pBox)
virtual FactoryFunction GetUITestFactory() const override
virtual void PixelInvalidate(const tools::Rectangle *pRectangle) override
Notification about some rectangle of the output device got invalidated.
virtual bool set_property(const OString &rKey, const OUString &rValue) override
int get_default_response() const
void DumpAsPropertyTree(tools::JsonWriter &rJsonWriter) override
Dumps itself and potentially its children to a property tree, to be written easily to JSON.
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
virtual void settingOptimalLayoutSize(Window *pBox) override
void ImplSetModalInputMode(bool bModal)
virtual void Command(const CommandEvent &rCEvt) override
bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx)
Commence execution of a modal dialog, disposes owner on failure.
static void ImplEndExecuteModal()
bool IsInSyncExecute() const
SAL_DLLPRIVATE bool IsInClose() const
SAL_DLLPRIVATE void disposeOwnedButtons()
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects.
std::unique_ptr< DialogImpl > mpDialogImpl
void GrabFocusToFirstControl()
virtual ~Dialog() override
virtual void Resize() override
vcl::Window * GetFirstControlForFocus()
vcl::Window * get_widget_for_response(int nResponse)
virtual void ApplySettings(vcl::RenderContext &rRenderContext) override
void EndDialog(tools::Long nResult=RET_CANCEL)
virtual bool Close() override
void SetPopupMenuHdl(const Link< const CommandEvent &, bool > &rLink)
virtual void Draw(OutputDevice *pDev, const Point &rPos, SystemTextColorFlags nFlags) override
SAL_DLLPRIVATE void ImplInitSettings()
void SetInstallLOKNotifierHdl(const Link< void *, vcl::ILibreOfficeKitNotifier * > &rLink)
virtual bool EventNotify(NotifyEvent &rNEvt) override
void ImplInitDialog(vcl::Window *pParent, WinBits nStyle, InitFlag eFlag=InitFlag::Default)
virtual void queue_resize(StateChangedType eReason=StateChangedType::Layout) override
tools::Long mnMousePositioned
void SetModalInputMode(bool bModal)
SAL_DLLPRIVATE void RemoveFromDlgList()
virtual void StateChanged(StateChangedType nStateChange) override
VclButtonBox * get_action_area()
void set_default_response(int nResponse)
VclPtr< VclButtonBox > mpActionArea
void add_button(PushButton *pButton, int nResponse, bool bTransferOwnership)
SAL_DLLPRIVATE Dialog(const Dialog &)=delete
static SAL_DLLPRIVATE vcl::Window * GetDefDialogParent()
SAL_DLLPRIVATE void ImplInitDialogData()
void ImplLOKNotifier(vcl::Window *pParent)
Find and set the LOK notifier according to the pParent.
void GetDrawWindowBorder(sal_Int32 &rLeftBorder, sal_Int32 &rTopBorder, sal_Int32 &rRightBorder, sal_Int32 &rBottomBorder) const
void SetLOKTunnelingState(bool bEnabled)
virtual void doDeferredInit(WinBits nBits) override
VclPtr< VclBox > mpContentArea
SAL_DLLPRIVATE VclPtr< vcl::Window > AddBorderWindow(vcl::Window *pParent, WinBits nBits)
bool IsModalInputMode() const
void set_action_area(VclButtonBox *pBox)
vcl::Window * get_mnemonic_widget() const
const vcl::KeyCode & GetKeyCode() const
void RegisterMnemonic(const OUString &rKey)
OUString CreateMnemonic(const OUString &rKey)
MouseSettingsOptions GetOptions() const
const KeyEvent * GetKeyEvent() const
MouseNotifyEvent GetType() const
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
void DrawBitmapEx(const Point &rDestPt, const BitmapEx &rBitmapEx)
void DrawRect(const tools::Rectangle &rRect)
SAL_WARN_UNUSED_RESULT Point LogicToPixel(const Point &rLogicPt) const
void Push(vcl::PushFlags nFlags=vcl::PushFlags::ALL)
bool IsNativeControlSupported(ControlType nType, ControlPart nPart) const
Query the platform layer for control support.
A SalFrame is a system window (e.g. an X11 window).
void NotifyModalHierarchy(bool bModal)
virtual void SetModal(bool)
A construction helper for ScopedVclPtr.
constexpr tools::Long Height() const
constexpr tools::Long Width() const
const DialogStyle & GetDialogStyle() const
bool GetAutoMnemonic() const
virtual OUString GetText() const override
virtual void queue_resize(StateChangedType eReason=StateChangedType::Layout) override
virtual bool EventNotify(NotifyEvent &rNEvt) override
SAL_DLLPRIVATE void DoInitialLayout()
bool isLayoutEnabled() const
void loadUI(vcl::Window *pParent, const OString &rID, const OUString &rUIXMLDescription, const css::uno::Reference< css::frame::XFrame > &rFrame=css::uno::Reference< css::frame::XFrame >())
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects.
VclPtr< vcl::Window > mpDialogParent
virtual void Resize() override
std::unique_ptr< TopLevelWindowLockerImpl > m_xImpl
void incBusy(const weld::Widget *pIgnore)
void log(std::u16string_view rString)
static UITestLogger & getInstance()
virtual ~VclBuilderContainer()
void setDeferredProperties()
std::unique_ptr< VclBuilder > m_pUIBuilder
A construction helper for a temporary VclPtr.
void set(reference_type *pBody)
const BitmapEx & GetBitmap() const
const Color & GetColor() const
sal_uInt16 GetCode() const
SAL_DLLPRIVATE vcl::Window * ImplFindDlgCtrlWindow(vcl::Window *pWindow)
const Wallpaper & GetBackground() const
void SetActivateMode(ActivateModeFlags nMode)
bool IsReallyVisible() const
vcl::Window * GetParent() const
virtual void RequestHelp(const HelpEvent &rHEvt)
virtual void StateChanged(StateChangedType nStateChange)
SAL_DLLPRIVATE bool ImplIsPushButton() const
bool IsInputEnabled() const
void SetLOKNotifier(const vcl::ILibreOfficeKitNotifier *pNotifier, bool bParent=false)
Interface to register for dialog / window tunneling.
SAL_DLLPRIVATE vcl::Window * ImplGetDlgWindow(sal_uInt16 n, GetDlgWindowType nType, sal_uInt16 nStart=0, sal_uInt16 nEnd=0xFFFF, sal_uInt16 *pIndex=nullptr)
bool HasChildPathFocus(bool bSystemWindow=false) const
void EndTracking(TrackingEventFlags nFlags=TrackingEventFlags::NONE)
const OUString & get_id() const
Get the ID of the window.
WindowType GetType() const
virtual void Command(const CommandEvent &rCEvt)
vcl::Window * GetWindow(GetWindowType nType) const
void set_border_width(sal_Int32 nBorderWidth)
SAL_DLLPRIVATE vcl::Window * ImplGetBorderWindow() const
ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
void ReleaseLOKNotifier()
Indicate that LOK is not going to use this dialog any more.
bool IsCreatedWithToolkit() const
const AllSettings & GetSettings() const
void Show(bool bVisible=true, ShowFlags nFlags=ShowFlags::NONE)
const OString & GetHelpId() const
bool IsNativeControlSupported(ControlType nType, ControlPart nPart) const
Query the platform layer for control support.
SAL_DLLPRIVATE vcl::Window * ImplGetParent() const
SAL_DLLPRIVATE vcl::Window * ImplGetFirstOverlapWindow()
VclPtr< vcl::Window > GetParentWithLOKNotifier()
Find the nearest parent with LOK Notifier; can be itself if this Window has LOK notifier set.
const vcl::ILibreOfficeKitNotifier * GetLOKNotifier() const
bool IsInModalMode() const
A window is in modal mode if one of its children or subchildren is a running modal window (a modal di...
void SetPointerPosPixel(const Point &rPos)
std::unique_ptr< WindowImpl > mpWindowImpl
vcl::LOKWindowId GetLOKWindowId() const
SalFrame * ImplGetFrame() const
virtual void DumpAsPropertyTree(tools::JsonWriter &)
Dumps itself and potentially its children to a property tree, to be written easily to JSON.
virtual Size GetSizePixel() const
Size GetOutputSizePixel() const
bool IsControlBackground() const
virtual void DataChanged(const DataChangedEvent &rDCEvt)
Point GetPointerPosPixel()
virtual bool set_property(const OString &rKey, const OUString &rValue)
const Color & GetControlBackground() const
bool IsWindowOrChild(const vcl::Window *pWindow, bool bSystemWindow=false) const
virtual void ImplAdjustNWFSizes()
virtual void Invalidate(InvalidateFlags nFlags=InvalidateFlags::NONE)
weld::Window * GetFrameWeld() const
void CallEventListeners(VclEventId nEvent, void *pData=nullptr)
virtual void SetText(const OUString &rStr)
virtual OUString GetText() const
vcl::Window * ImplGetWindow() const
if this is a proxy return the client, otherwise itself
SAL_DLLPRIVATE vcl::Window * ImplGetFrameWindow() const
SAL_DLLPRIVATE void ImplInit(vcl::Window *pParent, WinBits nStyle, SystemParentData *pSystemParentData)
void EnableChildTransparentMode(bool bEnable=true)
void EnableInput(bool bEnable=true, bool bChild=true)
SAL_DLLPRIVATE void ImplControlFocus(GetFocusFlags nFlags=GetFocusFlags::NONE)
Size bestmaxFrameSizeForScreenSize(const Size &rScreenSize)
static PushButton * ImplGetDefaultButton(Dialog const *pDialog)
IMPL_LINK(Dialog, ResponseHdl, Button *, pButton, void)
static OString ImplGetDialogText(Dialog *pDialog)
vcl::Window * firstLogicalChildOfParent(const vcl::Window *pTopLevel)
vcl::Window * lastLogicalChildOfParent(const vcl::Window *pTopLevel)
void GenerateAutoMnemonicsOnHierarchy(const vcl::Window *pWindow)
static PushButton * ImplGetCancelButton(Dialog const *pDialog)
static bool ImplIsMnemonicCtrl(vcl::Window *pWindow)
static VclButtonBox * getActionArea(Dialog const *pDialog)
static vcl::Window * getActionAreaButtonList(Dialog const *pDialog)
vcl::Window * prevLogicalChildOfParent(const vcl::Window *pTopLevel, const vcl::Window *pChild)
static void ImplMouseAutoPos(Dialog *pDialog)
vcl::Window * nextLogicalChildOfParent(const vcl::Window *pTopLevel, const vcl::Window *pChild)
static PushButton * ImplGetOKButton(Dialog const *pDialog)
IMPL_LINK_NOARG(Dialog, ImplAsyncCloseHdl, void *, void)
virtual void EndDialog(sal_Int32 nResult) override
std::function< std::unique_ptr< UIObject >(vcl::Window *)> FactoryFunction
constexpr sal_uInt16 KEY_ESCAPE
bool isEnabledInLayout(const vcl::Window *pWindow)
bool isVisibleInLayout(const vcl::Window *pWindow)
bool isContainerWindow(const vcl::Window &rWindow)
#define LINK(Instance, Class, Member)
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
Reference< XComponentContext > getProcessComponentContext()
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
OUString toString(OptionInfo const *info)
void CloseTopLevel(vcl::Window *pWindow)
void EndAllDialogs(vcl::Window const *pParent)
void EnableDialogInput(vcl::Window *pWindow)
std::map< VclPtr< vcl::Window >, short > maResponses
Link< const CommandEvent &, bool > m_aPopupMenuHdl
short get_response(vcl::Window *pWindow) const
VclAbstractDialog::AsyncContext maEndCtx
Link< void *, vcl::ILibreOfficeKitNotifier * > m_aInstallLOKNotifierHdl
std::vector< VclPtr< PushButton > > maOwnedButtons
ImplSVFrameData maFrameData
ImplSVWinData * mpWinData
VclPtr< vcl::Window > mpIntroWindow
VclPtr< WorkWindow > mpAppWin
VclPtr< vcl::Window > mpCaptureWin
VclPtr< vcl::Window > mpTrackWin
std::vector< VclPtr< Dialog > > mpExecuteDialogs
Stack of dialogs that are Execute()'d - the last one is the top most one.
std::stack< std::vector< VclPtr< vcl::Window > > > m_aBusyStack
std::shared_ptr< weld::Dialog > mxOwnerSelf
std::shared_ptr< weld::DialogController > mxOwnerDialogController
VclPtr< VclReferenceBase > mxOwner
@ Silent
silently cancel any dialogs
@ Fatal
cancel any dialogs by std::abort
@ Off
do not automatically cancel dialogs
@ LOKSilent
silently cancel any dialogs (LOK case)
ImplSVData * ImplGetSVData()
WinBits const WB_CLOSEABLE
WinBits const WB_MOVEABLE
WinBits const WB_DIALOGCONTROL
WinBits const WB_SIZEABLE
WinBits const WB_SYSTEMWINDOW
WinBits const WB_DEFBUTTON
WinBits const WB_NODIALOGCONTROL
WinBits const WB_STANDALONE
WinBits const WB_ALLOWMENUBAR
WinBits const WB_NOBORDER