96    bool workspaceEvent(xcb_generic_event_t *);
 
   98    bool hasWindow(
const Window *);
 
  138    void forEachClient(std::function<
void(
X11Window *)> func);
 
  146    X11Window *findUnmanaged(xcb_window_t w) 
const;
 
  148    Window *findWindow(
const QUuid &internalId) 
const;
 
  149    Window *findWindow(std::function<
bool(
const Window *)> func) 
const;
 
  150    void forEachWindow(std::function<
void(
Window *)> func);
 
  160    Window *findInternal(QWindow *w) 
const;
 
  170    QRect geometry() 
const;
 
  175    Output *xineramaIndexToOutput(
int index) 
const;
 
  177    void setOutputOrder(
const QList<Output *> &order);
 
  178    QList<Output *> outputOrder() 
const;
 
  180    Output *activeOutput() 
const;
 
  181    void setActiveOutput(
Output *output);
 
  182    void setActiveOutput(
const QPointF &pos);
 
  183    void setActiveCursorOutput(
Output *output);
 
  184    void setActiveCursorOutput(
const QPointF &pos);
 
  190    Window *activeWindow() 
const;
 
  196    Window *mostRecentlyActivatedWindow() 
const;
 
  200    void activateWindow(
Window *window, 
bool force = 
false);
 
  201    bool requestFocus(
Window *window, 
bool force = 
false);
 
  203        ActivityFocus = 1 << 0, 
 
  204        ActivityFocusForce = 1 << 1 | ActivityFocus, 
 
  205        ActivityRaise = 1 << 2 
 
 
  207    Q_DECLARE_FLAGS(ActivityFlags, ActivityFlag)
 
  208    bool takeActivity(
Window *window, ActivityFlags flags);
 
  210    void gotFocusIn(
const Window *window);
 
  211    void setShouldGetFocus(
Window *window);
 
  212    bool activateNextWindow(
Window *window);
 
  215        return block_focus == 0;
 
 
  221    void setMoveResizeWindow(
Window *window);
 
  223    QRectF adjustClientArea(
Window *window, 
const QRectF &area) 
const;
 
  224    QPointF adjustWindowPosition(
Window *window, QPointF pos, 
bool unrestricted, 
double snapAdjust = 1.0);
 
  225    QRectF adjustWindowSize(
Window *window, QRectF moveResizeGeom, 
Gravity gravity);
 
  226    void raiseWindow(
Window *window, 
bool nogroup = 
false);
 
  227    void lowerWindow(
Window *window, 
bool nogroup = 
false);
 
  228    void raiseWindowRequest(
Window *window, NET::RequestSource src = NET::FromApplication, xcb_timestamp_t timestamp = 0);
 
  229    void lowerWindowRequest(
X11Window *window, NET::RequestSource src, xcb_timestamp_t timestamp);
 
  230    void lowerWindowRequest(
Window *window);
 
  231    void restackWindowUnderActive(
Window *window);
 
  232    void restack(
Window *window, 
Window *under, 
bool force = 
false);
 
  233    void raiseOrLowerWindow(
Window *window);
 
  234    void resetUpdateToolWindowsTimer();
 
  235    void restoreSessionStackingOrder(
X11Window *window);
 
  236    void updateStackingOrder(
bool propagate_new_windows = 
false);
 
  237    void forceRestacking();
 
  242    void windowHidden(
Window *);
 
  243    void windowAttentionChanged(
Window *, 
bool set);
 
  253    void stackScreenEdgesUnderOverrideRedirect();
 
  263    QPoint cascadeOffset(
const Window *c) 
const;
 
  266    QTimer *m_quickTileCombineTimer;
 
  267    QuickTileMode m_lastTilingMode;
 
  275    bool inUpdateClientArea() 
const;
 
  277    QHash<const Output *, QRect> previousScreenSizes() 
const;
 
  283    const QList<Window *> &stackingOrder() 
const;
 
  284    QList<Window *> unconstrainedStackingOrder() 
const;
 
  285    QList<X11Window *> ensureStackingOrder(
const QList<X11Window *> &windows) 
const;
 
  286    QList<Window *> ensureStackingOrder(
const QList<Window *> &windows) 
const;
 
  289                               bool only_normal = 
true) 
const;
 
  291    void sendWindowToDesktops(
Window *window, 
const QList<VirtualDesktop *> &desktops, 
bool dont_activate);
 
  292    void windowToPreviousDesktop(
Window *window);
 
  293    void windowToNextDesktop(
Window *window);
 
  294    void sendWindowToOutput(
Window *window, 
Output *output);
 
  298        manual_overlays << id;
 
 
  302        manual_overlays.removeOne(
id);
 
 
  309    void showWindowMenu(
const QRect &pos, 
Window *cl);
 
  312        return m_userActionsMenu;
 
 
  315    void showApplicationMenu(
const QRect &pos, 
Window *window, 
int actionId);
 
  317    void updateMinimizedOfTransients(
Window *);
 
  318    void updateOnAllDesktopsOfTransients(
Window *);
 
  319    void checkTransients(xcb_window_t w);
 
  324    QString supportInformation() 
const;
 
  334    Output *findOutput(
Output *reference, Direction direction, 
bool wrapAround = 
false) 
const;
 
  335    void switchToOutput(
Output *output);
 
  337    QList<Output *> outputs() 
const;
 
  338    Output *outputAt(
const QPointF &pos) 
const;
 
  346    void setShowingDesktop(
bool showing, 
bool animated = 
true);
 
  347    bool showingDesktop() 
const;
 
  350    void setActiveWindow(
Window *window);
 
  351    Group *findGroup(xcb_window_t leader) 
const;
 
  352    void addGroup(
Group *group);
 
  353    void removeGroup(
Group *group);
 
  358    void removeDeleted(
Window *);
 
  359    void addDeleted(
Window *);
 
  361    bool checkStartupNotification(xcb_window_t w, KStartupInfoId &
id, KStartupInfoData &data);
 
  365    void windowShortcutUpdated(
Window *window);
 
  366    bool shortcutAvailable(
const QKeySequence &cut, 
Window *ignore = 
nullptr) 
const;
 
  367    bool globalShortcutsDisabled() 
const;
 
  368    void disableGlobalShortcutsForClient(
bool disable);
 
  370    void setWasUserInteraction();
 
  371    bool wasUserInteraction() 
const;
 
  373    qreal packPositionLeft(
const Window *window, qreal oldX, 
bool leftEdge) 
const;
 
  374    qreal packPositionRight(
const Window *window, qreal oldX, 
bool rightEdge) 
const;
 
  375    qreal packPositionUp(
const Window *window, qreal oldY, 
bool topEdge) 
const;
 
  376    qreal packPositionDown(
const Window *window, qreal oldY, 
bool bottomEdge) 
const;
 
  378    void cancelDelayFocus();
 
  379    void requestDelayFocus(
Window *);
 
  388    void updateFocusMousePosition(
const QPointF &pos);
 
  389    QPointF focusMousePosition() 
const;
 
  398        return m_moveResizeWindow;
 
 
  401    void quickTileWindow(QuickTileMode mode);
 
  402    void switchWindow(Direction direction);
 
  406        return m_windowKeysDialog;
 
 
  416    void setInitialDesktop(
int desktop);
 
  420        return should_get_focus.contains(w);
 
 
  424        return m_lastActiveWindow;
 
 
  436#if KWIN_BUILD_ACTIVITIES 
  444    bool applyOutputConfiguration(
const OutputConfiguration &config, 
const QList<Output *> &outputOrder = {});
 
  447    void performWindowOperation(
KWin::Window *window, Options::WindowOperation op);
 
  450    void slotWindowToDesktop(VirtualDesktop *desktop);
 
  453    void slotSwitchToScreen(Output *output);
 
  454    void slotWindowToScreen(Output *output);
 
  455    void slotSwitchToLeftScreen();
 
  456    void slotSwitchToRightScreen();
 
  457    void slotSwitchToAboveScreen();
 
  458    void slotSwitchToBelowScreen();
 
  459    void slotSwitchToPrevScreen();
 
  460    void slotSwitchToNextScreen();
 
  461    void slotWindowToLeftScreen();
 
  462    void slotWindowToRightScreen();
 
  463    void slotWindowToAboveScreen();
 
  464    void slotWindowToBelowScreen();
 
  465    void slotWindowToNextScreen();
 
  466    void slotWindowToPrevScreen();
 
  468    void slotToggleShowDesktop();
 
  470    void slotWindowMaximize();
 
  471    void slotWindowMaximizeVertical();
 
  472    void slotWindowMaximizeHorizontal();
 
  473    void slotWindowMinimize();
 
  474    void slotWindowShade();
 
  475    void slotWindowRaise();
 
  476    void slotWindowLower();
 
  477    void slotWindowRaiseOrLower();
 
  478    void slotActivateAttentionWindow();
 
  480    void slotWindowCenter();
 
  482    void slotWindowMoveLeft();
 
  483    void slotWindowMoveRight();
 
  484    void slotWindowMoveUp();
 
  485    void slotWindowMoveDown();
 
  486    void slotWindowExpandHorizontal();
 
  487    void slotWindowExpandVertical();
 
  488    void slotWindowShrinkHorizontal();
 
  489    void slotWindowShrinkVertical();
 
  491    void slotIncreaseWindowOpacity();
 
  492    void slotLowerWindowOpacity();
 
  494    void slotWindowOperations();
 
  495    void slotWindowClose();
 
  496    void slotWindowMove();
 
  497    void slotWindowResize();
 
  498    void slotWindowAbove();
 
  499    void slotWindowBelow();
 
  500    void slotWindowOnAllDesktops();
 
  501    void slotWindowFullScreen();
 
  502    void slotWindowNoBorder();
 
  504    void slotWindowToNextDesktop();
 
  505    void slotWindowToPreviousDesktop();
 
  506    void slotWindowToDesktopRight();
 
  507    void slotWindowToDesktopLeft();
 
  508    void slotWindowToDesktopUp();
 
  509    void slotWindowToDesktopDown();
 
  512    void slotReconfigure();
 
  514    void slotKillWindow();
 
  516    void slotSetupWindowShortcut();
 
  517    void setupWindowShortcutDone(
bool);
 
  519    void updateClientArea();
 
  522    void desktopResized();
 
  523    void selectWmInputEventMask();
 
  524    void slotUpdateToolWindows();
 
  526    void slotReloadConfig();
 
  527    void updateCurrentActivity(
const QString &new_activity);
 
  529    void slotCurrentDesktopChanged(VirtualDesktop *previousDesktop, VirtualDesktop *newDesktop);
 
  530    void slotCurrentDesktopChanging(VirtualDesktop *currentDesktop, QPointF delta);
 
  531    void slotCurrentDesktopChangingCancelled();
 
  532    void slotDesktopAdded(VirtualDesktop *desktop);
 
  533    void slotDesktopRemoved(VirtualDesktop *desktop);
 
  534    void slotOutputBackendOutputsQueried();
 
  569    void initializeX11();
 
  571    void initShortcuts();
 
  572    template<
typename Slot>
 
  573    void initShortcut(
const QString &actionName, 
const QString &description, 
const QKeySequence &shortcut, Slot slot);
 
  574    template<
typename T, 
typename Slot>
 
  575    void initShortcut(
const QString &actionName, 
const QString &description, 
const QKeySequence &shortcut, T *receiver, Slot slot);
 
  576    void setupWindowShortcut(
Window *window);
 
  579    void propagateWindows(
bool propagate_new_windows); 
 
  580    QList<Window *> constrainedStackingOrder();
 
  581    void raiseWindowWithinApplication(
Window *window);
 
  582    void lowerWindowWithinApplication(
Window *window);
 
  583    bool allowFullClientRaising(
const Window *window, xcb_timestamp_t timestamp);
 
  584    void blockStackingUpdates(
bool block);
 
  585    void updateToolWindows(
bool also_hide);
 
  586    void fixPositionAfterCrash(xcb_window_t w, 
const xcb_get_geometry_reply_t *geom);
 
  587    void saveOldScreenSizes();
 
  588    void addToStack(
Window *window);
 
  589    void removeFromStack(
Window *window);
 
  592    X11Window *createX11Window(xcb_window_t windowId, 
bool is_mapped);
 
  594    void setupWindowConnections(
Window *window);
 
  595    X11Window *createUnmanaged(xcb_window_t windowId);
 
  598    void addWaylandWindow(
Window *window);
 
  599    void removeWaylandWindow(
Window *window);
 
  603    void closeActivePopup();
 
  604    void updateWindowVisibilityOnDesktopChange(
VirtualDesktop *newDesktop);
 
  607    void removeWindow(
Window *window);
 
  608    QString getPlacementTrackerHash();
 
  610    void updateOutputConfiguration();
 
  611    void updateOutputs(
const QList<Output *> &outputOrder = {});
 
  612    void createDpmsFilter();
 
  613    void maybeDestroyDpmsFilter();
 
  615    bool breaksShowingDesktop(
Window *window) 
const;
 
  622        QList<Constraint *> parents;
 
  624        QList<Constraint *> children;
 
  626        bool enqueued = 
false;
 
  629    QList<Constraint *> m_constraints;
 
  630    QWidget *active_popup;
 
  631    Window *m_activePopupWindow;
 
  633    int m_initialDesktop;
 
  634    void updateXStackingOrder();
 
  637    QList<Output *> m_outputs;
 
  638    Output *m_activeOutput = 
nullptr;
 
  639    Output *m_activeCursorOutput = 
nullptr;
 
  640    QList<Output *> m_outputOrder;
 
  643    Window *m_lastActiveWindow;
 
  644    Window *m_moveResizeWindow;
 
  647    QTimer *delayFocusTimer;
 
  648    Window *m_delayFocusWindow;
 
  649    QPointF focusMousePos;
 
  651    QList<Window *> m_windows;
 
  652    QList<Window *> deleted;
 
  654    QList<Window *> unconstrained_stacking_order; 
 
  655    QList<Window *> stacking_order; 
 
  656    QList<xcb_window_t> manual_overlays; 
 
  657    bool force_restacking;
 
  658    QList<Window *> should_get_focus; 
 
  659    QList<Window *> attention_chain;
 
  661    bool showing_desktop;
 
  663    QList<Group *> groups;
 
  665    bool was_user_interaction;
 
  666    std::unique_ptr<X11EventFilter> m_wasUserInteractionFilter;
 
  674    UserActionsMenu *m_userActionsMenu;
 
  676    void modalActionsSwitch(
bool enabled);
 
  678    ShortcutDialog *m_windowKeysDialog = 
nullptr;
 
  679    Window *m_windowKeysWindow = 
nullptr;
 
  680    bool m_globalShortcutsDisabledForWindow = 
false;
 
  683    QTimer reconfigureTimer;
 
  685    QTimer updateToolWindowsTimer;
 
  687    static Workspace *_self;
 
  689    std::unique_ptr<KStartupInfo> m_startup;
 
  691    QHash<const VirtualDesktop *, QRectF> m_workAreas;
 
  692    QHash<const VirtualDesktop *, StrutRects> m_restrictedAreas;
 
  693    QHash<const VirtualDesktop *, QHash<const Output *, QRectF>> m_screenAreas;
 
  696    QHash<const Output *, QRect> m_oldScreenGeometries;
 
  697    QHash<const VirtualDesktop *, StrutRects> m_oldRestrictedAreas;
 
  698    bool m_inUpdateClientArea = 
false;
 
  700    int m_setActiveWindowRecursion = 0;
 
  701    int m_blockStackingUpdates = 0; 
 
  702    bool m_blockedPropagatingNewWindows; 
 
  703    std::unique_ptr<Xcb::Window> m_nullFocus;
 
  706    std::unique_ptr<KillWindow> m_windowKiller;
 
  707    std::unique_ptr<X11EventFilter> m_movingClientFilter;
 
  708    std::unique_ptr<X11EventFilter> m_syncAlarmFilter;
 
  711    std::unique_ptr<FocusChain> m_focusChain;
 
  712    std::unique_ptr<ApplicationMenu> m_applicationMenu;
 
  713    std::unique_ptr<Decoration::DecorationBridge> m_decorationBridge;
 
  714    std::unique_ptr<Outline> m_outline;
 
  715    std::unique_ptr<Placement> m_placement;
 
  716    std::unique_ptr<RuleBook> m_rulebook;
 
  717    std::unique_ptr<ScreenEdges> m_screenEdges;
 
  719    std::unique_ptr<TabBox::TabBox> m_tabbox;
 
  721#if KWIN_BUILD_ACTIVITIES 
  722    std::unique_ptr<Activities> m_activities;
 
  724    std::unique_ptr<PlacementTracker> m_placementTracker;
 
  727    std::unique_ptr<PlaceholderInputEventFilter> m_placeholderFilter;
 
  728    std::map<Output *, std::unique_ptr<TileManager>> m_tileManagers;
 
  729    std::unique_ptr<OutputConfigurationStore> m_outputConfigStore;
 
  730    std::unique_ptr<LidSwitchTracker> m_lidSwitchTracker;
 
  731    std::unique_ptr<OrientationSensor> m_orientationSensor;
 
  732    std::unique_ptr<DpmsInputEventFilter> m_dpmsFilter;