// This file is part of Desktop App Toolkit, // a set of libraries for developing nice desktop applications. // // For license and copyright information please follow this link: // https://github.com/desktop-app/legal/blob/master/LEGAL // #pragma once class QPoint; class QPainter; class QPaintEvent; namespace Ui { class PopupMenu; } // namespace Ui namespace Ui::Platform { [[nodiscard]] bool IsApplicationActive(); [[nodiscard]] bool TranslucentWindowsSupported(); void InitOnTopPanel(not_null panel); void DeInitOnTopPanel(not_null panel); void ReInitOnTopPanel(not_null panel); void UpdateOverlayed(not_null widget); void ShowOverAll(not_null widget, bool canFocus = true); void IgnoreAllActivation(not_null widget); void ClearTransientParent(not_null widget); void DisableSystemWindowResize(not_null widget, QSize ratio); [[nodiscard]] std::optional IsOverlapped( not_null widget, const QRect &rect); [[nodiscard]] constexpr bool UseMainQueueGeneric(); void DrainMainQueue(); // Needed only if UseMainQueueGeneric() is false. [[nodiscard]] bool WindowExtentsSupported(); void SetWindowExtents(not_null widget, const QMargins &extents); void UnsetWindowExtents(not_null widget); void ShowWindowMenu(not_null widget, const QPoint &point); void FixPopupMenuNativeEmojiPopup(not_null menu); // Workaround for a Qt/Wayland bug that hides the parent popup when // the child popup gets hidden, by sending Deactivate / Activate events. void RegisterChildPopupHiding(); [[nodiscard]] bool SkipApplicationDeactivateEvent(); void GotApplicationActivateEvent(); } // namespace Ui::Platform // Platform dependent implementations. #ifdef Q_OS_MAC #include "ui/platform/mac/ui_utility_mac.h" #elif defined Q_OS_UNIX // Q_OS_MAC #include "ui/platform/linux/ui_utility_linux.h" #elif defined Q_OS_WINRT || defined Q_OS_WIN // Q_OS_MAC || Q_OS_UNIX #include "ui/platform/win/ui_utility_win.h" #endif // Q_OS_MAC || Q_OS_UNIX || Q_OS_WINRT || Q_OS_WIN