KWin
Loading...
Searching...
No Matches
window.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
6 SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
7
8 SPDX-License-Identifier: GPL-2.0-or-later
9*/
10#pragma once
11
12#include "cursor.h"
13#include "options.h"
14#include "rules.h"
15#include "utils/common.h"
16
17#include <functional>
18#include <memory>
19
20#include <NETWM>
21
22#include <QElapsedTimer>
23#include <QIcon>
24#include <QKeySequence>
25#include <QMatrix4x4>
26#include <QObject>
27#include <QPointer>
28#include <QRectF>
29#include <QTimer>
30#include <QUuid>
31
32class QMouseEvent;
33
34namespace KDecoration2
35{
36class Decoration;
37}
38
39namespace KWin
40{
41class PlasmaWindowInterface;
42class SurfaceInterface;
43class Group;
44class Output;
45class ClientMachine;
46class EffectWindow;
47class Tile;
48class Scene;
49class Shadow;
50class SurfaceItem;
51class VirtualDesktop;
52class WindowItem;
53
54namespace Decoration
55{
56class DecoratedClientImpl;
57class DecorationPalette;
58}
59
60class KWIN_EXPORT Window : public QObject
61{
62 Q_OBJECT
63
69 Q_PROPERTY(QRectF bufferGeometry READ bufferGeometry)
70
71
74 Q_PROPERTY(QRectF clientGeometry READ clientGeometry)
75
79 Q_PROPERTY(QPointF pos READ pos)
80
84 Q_PROPERTY(QSizeF size READ size)
85
89 Q_PROPERTY(qreal x READ x NOTIFY frameGeometryChanged)
90
94 Q_PROPERTY(qreal y READ y NOTIFY frameGeometryChanged)
95
99 Q_PROPERTY(qreal width READ width NOTIFY frameGeometryChanged)
100
104 Q_PROPERTY(qreal height READ height NOTIFY frameGeometryChanged)
105
106 Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged)
107
111 Q_PROPERTY(KWin::Output *output READ output NOTIFY outputChanged)
112
113 Q_PROPERTY(QRectF rect READ rect)
114 Q_PROPERTY(QString resourceName READ resourceName NOTIFY windowClassChanged)
115 Q_PROPERTY(QString resourceClass READ resourceClass NOTIFY windowClassChanged)
116 Q_PROPERTY(QString windowRole READ windowRole NOTIFY windowRoleChanged)
117
122 Q_PROPERTY(bool desktopWindow READ isDesktop CONSTANT)
123
128 Q_PROPERTY(bool dock READ isDock CONSTANT)
129
134 Q_PROPERTY(bool toolbar READ isToolbar CONSTANT)
135
140 Q_PROPERTY(bool menu READ isMenu CONSTANT)
141
147 Q_PROPERTY(bool normalWindow READ isNormalWindow CONSTANT)
148
153 Q_PROPERTY(bool dialog READ isDialog CONSTANT)
154
160 Q_PROPERTY(bool splash READ isSplash CONSTANT)
161
166 Q_PROPERTY(bool utility READ isUtility CONSTANT)
167
173 Q_PROPERTY(bool dropdownMenu READ isDropdownMenu CONSTANT)
174
179 Q_PROPERTY(bool popupMenu READ isPopupMenu CONSTANT)
180
185 Q_PROPERTY(bool tooltip READ isTooltip CONSTANT)
186
191 Q_PROPERTY(bool notification READ isNotification CONSTANT)
192
196 Q_PROPERTY(bool criticalNotification READ isCriticalNotification CONSTANT)
197
201 Q_PROPERTY(bool appletPopup READ isAppletPopup CONSTANT)
202
206 Q_PROPERTY(bool onScreenDisplay READ isOnScreenDisplay CONSTANT)
207
212 Q_PROPERTY(bool comboBox READ isComboBox CONSTANT)
213
218 Q_PROPERTY(bool dndIcon READ isDNDIcon CONSTANT)
219
224 Q_PROPERTY(int windowType READ windowType CONSTANT)
225
230 Q_PROPERTY(bool managed READ isClient CONSTANT)
231
235 Q_PROPERTY(bool deleted READ isDeleted CONSTANT)
236
242 Q_PROPERTY(bool skipsCloseAnimation READ skipsCloseAnimation WRITE setSkipCloseAnimation NOTIFY skipCloseAnimationChanged)
243
247 Q_PROPERTY(bool popupWindow READ isPopupWindow)
248
254 Q_PROPERTY(bool outline READ isOutline)
255
259 Q_PROPERTY(QUuid internalId READ internalId CONSTANT)
260
266 Q_PROPERTY(int pid READ pid CONSTANT)
267
271 Q_PROPERTY(int stackingOrder READ stackingOrder NOTIFY stackingOrderChanged)
272
278 Q_PROPERTY(bool fullScreen READ isFullScreen WRITE setFullScreen NOTIFY fullScreenChanged)
279
284 Q_PROPERTY(bool fullScreenable READ isFullScreenable)
285
290 Q_PROPERTY(bool active READ isActive NOTIFY activeChanged)
291
295 Q_PROPERTY(QList<KWin::VirtualDesktop *> desktops READ desktops WRITE setDesktops NOTIFY desktopsChanged)
296
300 Q_PROPERTY(bool onAllDesktops READ isOnAllDesktops WRITE setOnAllDesktops NOTIFY desktopsChanged)
301
305 Q_PROPERTY(QStringList activities READ activities WRITE setOnActivities NOTIFY activitiesChanged)
306
310 Q_PROPERTY(bool skipTaskbar READ skipTaskbar WRITE setSkipTaskbar NOTIFY skipTaskbarChanged)
311
315 Q_PROPERTY(bool skipPager READ skipPager WRITE setSkipPager NOTIFY skipPagerChanged)
316
320 Q_PROPERTY(bool skipSwitcher READ skipSwitcher WRITE setSkipSwitcher NOTIFY skipSwitcherChanged)
321
325 Q_PROPERTY(bool closeable READ isCloseable NOTIFY closeableChanged)
326
327 Q_PROPERTY(QIcon icon READ icon NOTIFY iconChanged)
328
332 Q_PROPERTY(bool keepAbove READ keepAbove WRITE setKeepAbove NOTIFY keepAboveChanged)
333
337 Q_PROPERTY(bool keepBelow READ keepBelow WRITE setKeepBelow NOTIFY keepBelowChanged)
338
343 Q_PROPERTY(bool shadeable READ isShadeable NOTIFY shadeableChanged)
344
348 Q_PROPERTY(bool shade READ isShade WRITE setShade NOTIFY shadeChanged)
349
354 Q_PROPERTY(bool minimizable READ isMinimizable)
355
359 Q_PROPERTY(bool minimized READ isMinimized WRITE setMinimized NOTIFY minimizedChanged)
360
367 Q_PROPERTY(QRectF iconGeometry READ iconGeometry)
368
376 Q_PROPERTY(bool specialWindow READ isSpecialWindow)
377
386 Q_PROPERTY(bool demandsAttention READ isDemandingAttention WRITE demandAttention NOTIFY demandsAttentionChanged)
387
392 Q_PROPERTY(QString caption READ caption NOTIFY captionChanged)
393
397 Q_PROPERTY(QSizeF minSize READ minSize)
398
402 Q_PROPERTY(QSizeF maxSize READ maxSize)
403
409 Q_PROPERTY(bool wantsInput READ wantsInput)
410
415 Q_PROPERTY(bool transient READ isTransient NOTIFY transientChanged)
416
420 Q_PROPERTY(KWin::Window *transientFor READ transientFor NOTIFY transientChanged)
421
425 Q_PROPERTY(bool modal READ isModal NOTIFY modalChanged)
426
431 Q_PROPERTY(QRectF frameGeometry READ frameGeometry WRITE moveResize NOTIFY frameGeometryChanged)
432
437 Q_PROPERTY(bool move READ isInteractiveMove NOTIFY moveResizedChanged)
438
443 Q_PROPERTY(bool resize READ isInteractiveResize NOTIFY moveResizedChanged)
444
448 Q_PROPERTY(bool decorationHasAlpha READ decorationHasAlpha)
449
456 Q_PROPERTY(bool noBorder READ noBorder WRITE setNoBorder)
457
462 Q_PROPERTY(bool providesContextHelp READ providesContextHelp CONSTANT)
463
469 Q_PROPERTY(bool maximizable READ isMaximizable)
470
477 Q_PROPERTY(bool moveable READ isMovable)
478
484 Q_PROPERTY(bool moveableAcrossScreens READ isMovableAcrossScreens)
485
490 Q_PROPERTY(bool resizeable READ isResizable)
491
501 Q_PROPERTY(QString desktopFileName READ desktopFileName NOTIFY desktopFileNameChanged)
502
506 Q_PROPERTY(bool hasApplicationMenu READ hasApplicationMenu NOTIFY hasApplicationMenuChanged)
507
511 Q_PROPERTY(bool applicationMenuActive READ applicationMenuActive NOTIFY applicationMenuActiveChanged)
512
519 Q_PROPERTY(bool unresponsive READ unresponsive NOTIFY unresponsiveChanged)
520
527 Q_PROPERTY(QString colorScheme READ colorScheme NOTIFY colorSchemeChanged)
528
529 Q_PROPERTY(KWin::Layer layer READ layer)
530
534 Q_PROPERTY(bool hidden READ isHidden NOTIFY hiddenChanged)
535
539 Q_PROPERTY(KWin::Tile *tile READ tile WRITE setTile NOTIFY tileChanged)
540
545 Q_PROPERTY(bool inputMethod READ isInputMethod)
546
547public:
548 ~Window() override;
549
550 void ref();
551 void unref();
552
562 QRectF moveResizeGeometry() const;
563
568 Output *moveResizeOutput() const;
569 void setMoveResizeOutput(Output *output);
570
579 QRectF bufferGeometry() const;
584 QRectF frameGeometry() const;
588 QRectF clientGeometry() const;
595 QMargins frameMargins() const;
596
597 virtual QSizeF minSize() const;
598 virtual QSizeF maxSize() const;
599 QSizeF size() const;
600 QPointF pos() const;
601 QRectF rect() const;
602 qreal x() const;
603 qreal y() const;
604 qreal width() const;
605 qreal height() const;
606 bool isOnOutput(Output *output) const;
607 bool isOnActiveOutput() const;
608 Output *output() const;
609 void setOutput(Output *output);
610 QSizeF clientSize() const;
614 QRectF visibleGeometry() const;
615
619 QPointF mapToFrame(const QPointF &point) const;
625 QPointF mapToLocal(const QPointF &point) const;
626 QPointF mapFromLocal(const QPointF &point) const;
627
631 virtual QPointF framePosToClientPos(const QPointF &point) const;
635 virtual QPointF clientPosToFramePos(const QPointF &point) const;
643 virtual QSizeF frameSizeToClientSize(const QSizeF &size) const;
651 virtual QSizeF clientSizeToFrameSize(const QSizeF &size) const;
657 QRectF frameRectToClientRect(const QRectF &rect) const;
663 QRectF clientRectToFrameRect(const QRectF &rect) const;
664
674
675 virtual QSizeF constrainClientSize(const QSizeF &size, SizeMode mode = SizeModeAny) const;
676 QSizeF constrainFrameSize(const QSizeF &size, SizeMode mode = SizeModeAny) const;
677
678 void move(const QPointF &point);
679 void resize(const QSizeF &size);
680 void moveResize(const QRectF &rect);
681
682 void growHorizontal();
683 void shrinkHorizontal();
684 void growVertical();
685 void shrinkVertical();
686
687 virtual QRectF resizeWithChecks(const QRectF &geometry, const QSizeF &s) = 0;
688 void keepInArea(QRectF area, bool partial = false);
689 QRectF keepInArea(QRectF geometry, QRectF area, bool partial = false);
690
691 // prefer isXXX() instead
692 virtual NET::WindowType windowType() const = 0;
693 bool hasNETSupport() const;
694 bool isDesktop() const;
695 bool isDock() const;
696 bool isToolbar() const;
697 bool isMenu() const;
698 bool isNormalWindow() const; // normal as in 'NET::Normal or NET::Unknown non-transient'
699 bool isDialog() const;
700 bool isSplash() const;
701 bool isUtility() const;
702 bool isDropdownMenu() const;
703 bool isPopupMenu() const; // a context popup, not dropdown, not torn-off
704 bool isTooltip() const;
705 bool isNotification() const;
706 bool isCriticalNotification() const;
707 bool isAppletPopup() const;
708 bool isOnScreenDisplay() const;
709 bool isComboBox() const;
710 bool isDNDIcon() const;
711
712 virtual bool isLockScreen() const;
713 virtual bool isInputMethod() const;
714 virtual bool isOutline() const;
715 virtual bool isInternal() const;
716 virtual bool isPopupWindow() const;
717
718 virtual bool isClient() const;
719 bool isDeleted() const;
720 virtual bool isUnmanaged() const;
721
722 bool isLockScreenOverlay() const;
723 void setLockScreenOverlay(bool allowed);
724
725 QStringList desktopIds() const;
726 QList<VirtualDesktop *> desktops() const;
727 void setDesktops(QList<VirtualDesktop *> desktops);
728 void enterDesktop(VirtualDesktop *desktop);
729 void leaveDesktop(VirtualDesktop *desktop);
730 bool isOnDesktop(VirtualDesktop *desktop) const;
731 bool isOnCurrentDesktop() const;
732 bool isOnAllDesktops() const;
733 void setOnAllDesktops(bool set);
734
735 virtual QStringList activities() const;
736 bool isOnActivity(const QString &activity) const;
737 bool isOnCurrentActivity() const;
738 bool isOnAllActivities() const;
739 void setOnActivity(const QString &activity, bool enable);
740 void setOnActivities(const QStringList &newActivitiesList);
741 void setOnAllActivities(bool all);
742 virtual void updateActivities(bool includeTransients);
743 void blockActivityUpdates(bool b = true);
744
749 virtual void checkActivities(){};
750
751 virtual QString windowRole() const;
752 QString resourceName() const;
753 QString resourceClass() const;
754 QString wmClientMachine(bool use_localhost) const;
755 ClientMachine *clientMachine() const;
756 virtual bool isLocalhost() const;
757 virtual pid_t pid() const;
758
759 bool readyForPainting() const; // true if the window has been already painted its contents
760 void setOpacity(qreal opacity);
761 qreal opacity() const;
762 virtual bool setupCompositing();
763 virtual void finishCompositing();
764 EffectWindow *effectWindow();
765 const EffectWindow *effectWindow() const;
766 SurfaceItem *surfaceItem() const;
767 WindowItem *windowItem() const;
772 void elevate(bool elevate);
773
777 Shadow *shadow() const;
782 void updateShadow();
786 bool wantsShadowToBeRendered() const;
787
788 bool skipsCloseAnimation() const;
789 void setSkipCloseAnimation(bool set);
790
791 SurfaceInterface *surface() const;
792 void setSurface(SurfaceInterface *surface);
793
797 QMatrix4x4 inputTransformation() const;
798
802 virtual bool hitTest(const QPointF &point) const;
803
817 virtual bool hasPopupGrab() const
818 {
819 return false;
820 }
829 virtual void popupDone(){};
830
840 template<class T, class U>
841 static T *findInList(const QList<T *> &list, std::function<bool(const U *)> func);
842
846 QUuid internalId() const
847 {
848 return m_internalId;
849 }
850
851 int stackingOrder() const;
852 void setStackingOrder(int order);
853
854 bool skipSwitcher() const
855 {
856 return m_skipSwitcher;
857 }
858 void setSkipSwitcher(bool set);
859
860 bool skipTaskbar() const
861 {
862 return m_skipTaskbar;
863 }
864 void setSkipTaskbar(bool set);
865 void setOriginalSkipTaskbar(bool set);
867 {
868 return m_originalSkipTaskbar;
869 }
870
871 bool skipPager() const
872 {
873 return m_skipPager;
874 }
875 void setSkipPager(bool set);
876
877 const QIcon &icon() const
878 {
879 return m_icon;
880 }
881
882 bool isActive() const
883 {
884 return m_active;
885 }
896 void setActive(bool);
897
898 bool keepAbove() const
899 {
900 return m_keepAbove;
901 }
902 void setKeepAbove(bool);
903 bool keepBelow() const
904 {
905 return m_keepBelow;
906 }
907 void setKeepBelow(bool);
908
909 void demandAttention(bool set = true);
911 {
912 return m_demandsAttention;
913 }
914
915 void cancelAutoRaise();
916
917 virtual void updateMouseGrab();
923 QString caption() const;
929 virtual QString captionNormal() const = 0;
935 virtual QString captionSuffix() const = 0;
936 virtual bool isPlaceable() const;
937 virtual bool isCloseable() const = 0;
938 bool isShown() const;
939 bool isHidden() const;
940 void setHidden(bool hidden);
941 bool isHiddenByShowDesktop() const;
942 void setHiddenByShowDesktop(bool hidden);
943 // TODO: remove boolean trap
944 virtual Window *findModal(bool allow_itself = false) = 0;
945 virtual bool isTransient() const;
950 virtual bool hasTransientPlacementHint() const;
955 virtual QRectF transientPlacement() const;
956 const Window *transientFor() const;
958 void setTransientFor(Window *transientFor);
964 virtual bool hasTransient(const Window *transient, bool indirect) const;
965 const QList<Window *> &transients() const; // Is not indirect
966 virtual void addTransient(Window *transient);
967 virtual void removeTransient(Window *transient);
968 void removeTransientFromList(Window *cl);
969 virtual QList<Window *> mainWindows() const; // Call once before loop , is not indirect
970 QList<Window *> allMainWindows() const; // Call once before loop , is indirect
977 bool isSpecialWindow() const;
978 void sendToOutput(Output *output);
979 const QKeySequence &shortcut() const
980 {
981 return _shortcut;
982 }
983 void setShortcut(const QString &cut);
984
985 virtual QRectF iconGeometry() const;
986
987 void setMinimized(bool set);
988 bool isMinimized() const
989 {
990 return m_minimized;
991 }
992 virtual bool isMinimizable() const;
993
994 bool isSuspended() const;
995 void setSuspended(bool suspended);
996
997 QRectF fullscreenGeometryRestore() const;
998 virtual bool isFullScreenable() const;
999 virtual bool isFullScreen() const;
1000 virtual bool isRequestedFullScreen() const;
1001 virtual void setFullScreen(bool set);
1002
1003 bool wantsAdaptiveSync() const;
1004
1005 QRectF geometryRestore() const;
1006 virtual bool isMaximizable() const;
1007 virtual MaximizeMode maximizeMode() const;
1008 virtual MaximizeMode requestedMaximizeMode() const;
1009 virtual void maximize(MaximizeMode mode);
1013 Q_INVOKABLE void setMaximize(bool vertically, bool horizontally);
1014
1015 QPalette palette();
1016 const Decoration::DecorationPalette *decorationPalette();
1017
1021 virtual bool isResizable() const = 0;
1025 virtual bool isMovable() const = 0;
1029 virtual bool isMovableAcrossScreens() const = 0;
1030
1034 bool isShade() const
1035 {
1036 return shadeMode() == ShadeNormal;
1037 }
1038 ShadeMode shadeMode() const; // Prefer isShade()
1039 void setShade(bool set);
1040 void setShade(ShadeMode mode);
1041 void toggleShade();
1042 void cancelShadeHoverTimer();
1046 virtual bool isShadeable() const;
1047
1048 const WindowRules *rules() const
1049 {
1050 return &m_rules;
1051 }
1052 void removeRule(Rules *r);
1053 void setupWindowRules();
1054 void finishWindowRules();
1055 void evaluateWindowRules();
1056 virtual void updateWindowRules(Rules::Types selection);
1057 virtual void applyWindowRules();
1058 virtual bool supportsWindowRules() const;
1059
1060 bool wantsTabFocus() const;
1061 virtual bool takeFocus() = 0;
1062 virtual bool wantsInput() const = 0;
1074 virtual bool dockWantsInput() const;
1075 void checkWorkspacePosition(QRectF oldGeometry = QRectF(), const VirtualDesktop *oldDesktop = nullptr);
1076 virtual xcb_timestamp_t userTime() const;
1077
1078 void keyPressEvent(uint key_code);
1079
1080 virtual void pointerEnterEvent(const QPointF &globalPos);
1081 virtual void pointerLeaveEvent();
1082
1083 // a helper for the workspace window packing. tests for screen validity and updates since in maximization case as with normal moving
1084 void packTo(qreal left, qreal top);
1085
1086 Tile *tile() const;
1087 void setTile(Tile *tile);
1088
1095 void setQuickTileMode(QuickTileMode mode, bool keyboard = false);
1096 QuickTileMode quickTileMode() const
1097 {
1098 return QuickTileMode(m_quickTileMode);
1099 }
1100
1101 Layer layer() const;
1102 void updateLayer();
1103
1108 {
1109 return isInteractiveMoveResize() && interactiveMoveResizeGravity() == Gravity::None;
1110 }
1115 {
1116 return isInteractiveMoveResize() && interactiveMoveResizeGravity() != Gravity::None;
1117 }
1122 {
1123 return m_interactiveMoveResize.cursor;
1124 }
1125 uint32_t interactiveMoveResizeCount() const;
1126
1127 void updateInteractiveMoveResize(const QPointF &currentGlobalCursor);
1131 void endInteractiveMoveResize();
1132
1133 virtual StrutRect strutRect(StrutArea area) const;
1134 StrutRects strutRects() const;
1135 virtual bool hasStrut() const;
1136
1137 void setModal(bool modal);
1138 bool isModal() const;
1139
1147 Options::MouseCommand getMouseCommand(Qt::MouseButton button, bool *handled) const;
1148 Options::MouseCommand getWheelCommand(Qt::Orientation orientation, bool *handled) const;
1149 bool performMouseCommand(Options::MouseCommand, const QPointF &globalPos);
1150
1151 // decoration related
1152 Qt::Edge titlebarPosition() const;
1153 bool titlebarPositionUnderMouse() const;
1154 KDecoration2::Decoration *decoration()
1155 {
1156 return m_decoration.decoration.get();
1157 }
1158 const KDecoration2::Decoration *decoration() const
1159 {
1160 return m_decoration.decoration.get();
1161 }
1162 bool isDecorated() const
1163 {
1164 return m_decoration.decoration != nullptr;
1165 }
1166 Decoration::DecoratedClientImpl *decoratedClient() const;
1167 void setDecoratedClient(Decoration::DecoratedClientImpl *client);
1168 bool decorationHasAlpha() const;
1169 void triggerDecorationRepaint();
1170 void layoutDecorationRects(QRectF &left, QRectF &top, QRectF &right, QRectF &bottom) const;
1171 void processDecorationMove(const QPointF &localPos, const QPointF &globalPos);
1172 bool processDecorationButtonPress(QMouseEvent *event, bool ignoreMenu = false);
1173 void processDecorationButtonRelease(QMouseEvent *event);
1174
1175 virtual void invalidateDecoration();
1176
1177 virtual bool noBorder() const;
1178 virtual void setNoBorder(bool set);
1179 virtual bool userCanSetNoBorder() const;
1180 virtual void checkNoBorder();
1181
1190 virtual bool providesContextHelp() const;
1191
1200 virtual void showContextHelp();
1201
1206 QRectF virtualKeyboardGeometry() const;
1207
1212 virtual void setVirtualKeyboardGeometry(const QRectF &geo);
1213
1219 virtual void showOnScreenEdge();
1220
1221 QString desktopFileName() const
1222 {
1223 return m_desktopFileName;
1224 }
1225
1231 static QString iconFromDesktopFile(const QString &fileName);
1232
1233 static QString findDesktopFile(const QString &fileName);
1234
1240 virtual void killWindow() = 0;
1241 virtual void destroyWindow() = 0;
1242
1244 RelaxedForActive = 1 << 0,
1245 AllowCrossProcesses = 1 << 1
1246 };
1247 Q_DECLARE_FLAGS(SameApplicationChecks, SameApplicationCheck)
1248 static bool belongToSameApplication(const Window *c1, const Window *c2, SameApplicationChecks checks = SameApplicationChecks());
1249 virtual bool belongsToDesktop() const;
1250
1251 bool hasApplicationMenu() const;
1253 {
1254 return m_applicationMenuActive;
1255 }
1256 void setApplicationMenuActive(bool applicationMenuActive);
1257
1259 {
1260 return m_applicationMenuServiceName;
1261 }
1263 {
1264 return m_applicationMenuObjectPath;
1265 }
1266
1271 void showApplicationMenu(int actionId);
1272
1273 virtual QString preferredColorScheme() const;
1274 QString colorScheme() const;
1275 void setColorScheme(const QString &colorScheme);
1276
1277 bool unresponsive() const;
1278
1290 virtual bool groupTransient() const;
1296 virtual const Group *group() const;
1302 virtual Group *group();
1303
1308 {
1309 return m_windowManagementInterface;
1310 }
1311
1315 void setLastUsageSerial(quint32 serial);
1316 quint32 lastUsageSerial() const;
1317
1318 void refOffscreenRendering();
1319 void unrefOffscreenRendering();
1320
1321public Q_SLOTS:
1322 virtual void closeWindow() = 0;
1323
1324protected Q_SLOTS:
1325 void setReadyForPainting();
1326
1327Q_SIGNALS:
1330 void opacityChanged(KWin::Window *window, qreal oldOpacity);
1331 void damaged(KWin::Window *window);
1333 void closed();
1353
1358
1364
1368 void bufferGeometryChanged(const QRectF &oldGeometry);
1372 void frameGeometryChanged(const QRectF &oldGeometry);
1376 void clientGeometryChanged(const QRectF &oldGeometry);
1377
1382
1387
1392
1408 void paletteChanged(const QPalette &p);
1420 void interactiveMoveResizeStepped(const QRectF &geometry);
1436
1437protected:
1438 Window();
1439
1440 virtual std::unique_ptr<WindowItem> createItem(Scene *scene) = 0;
1441
1442 void setResourceClass(const QString &name, const QString &className = QString());
1443 void setIcon(const QIcon &icon);
1444 void startAutoRaise();
1445 void autoRaise();
1446 bool isMostRecentlyRaised() const;
1447 void markAsDeleted();
1453 virtual bool acceptsFocus() const = 0;
1460 virtual void doSetActive();
1467 virtual void doSetKeepAbove();
1474 virtual void doSetKeepBelow();
1481 virtual void doSetShade(ShadeMode previousShadeMode);
1488 virtual void doSetDesktop();
1497 virtual void doSetOnActivities(const QStringList &activityList);
1504 virtual void doMinimize();
1505 virtual bool belongsToSameApplication(const Window *other, SameApplicationChecks checks) const = 0;
1506
1507 virtual void doSetSkipTaskbar();
1508 virtual void doSetSkipPager();
1509 virtual void doSetSkipSwitcher();
1510 virtual void doSetDemandsAttention();
1511 virtual void doSetQuickTileMode();
1512 virtual void doSetHidden();
1513 virtual void doSetHiddenByShowDesktop();
1514 virtual void doSetSuspended();
1515
1516 void setupWindowManagementInterface();
1517 void destroyWindowManagementInterface();
1518 void updateColorScheme();
1519 void ensurePalette();
1520 void handlePaletteChange();
1521
1522 virtual Layer belongsToLayer() const;
1523 bool isActiveFullScreen() const;
1524
1525 // electric border / quick tiling
1526 void setElectricBorderMode(QuickTileMode mode);
1527 QuickTileMode electricBorderMode() const
1528 {
1529 return m_electricMode;
1530 }
1531 void setElectricBorderMaximizing(bool maximizing);
1533 {
1534 return m_electricMaximizing;
1535 }
1536 void updateElectricGeometryRestore();
1537 QRectF quickTileGeometryRestore() const;
1538 QRectF quickTileGeometry(QuickTileMode mode, const QPointF &pos) const;
1539 void updateQuickTileMode(QuickTileMode newMode)
1540 {
1541 m_quickTileMode = newMode;
1542 }
1543
1544 // geometry handling
1545 void checkOffscreenPosition(QRectF *geom, const QRectF &screenArea);
1546 int borderLeft() const;
1547 int borderRight() const;
1548 int borderTop() const;
1549 int borderBottom() const;
1550 void setGeometryRestore(const QRectF &rect);
1551 void setFullscreenGeometryRestore(const QRectF &geom);
1552
1553 void blockGeometryUpdates(bool block);
1554 void blockGeometryUpdates();
1555 void unblockGeometryUpdates();
1556 bool areGeometryUpdatesBlocked() const;
1557 enum class MoveResizeMode : uint {
1558 None,
1559 Move = 0x1,
1560 Resize = 0x2,
1561 MoveResize = Move | Resize,
1562 };
1563 MoveResizeMode pendingMoveResizeMode() const;
1564 void setPendingMoveResizeMode(MoveResizeMode mode);
1565 virtual void moveResizeInternal(const QRectF &rect, MoveResizeMode mode) = 0;
1566
1571 {
1572 return m_interactiveMoveResize.enabled;
1573 }
1577 void setInteractiveMoveResize(bool enabled)
1578 {
1579 m_interactiveMoveResize.enabled = enabled;
1580 }
1585 {
1586 return m_interactiveMoveResize.unrestricted;
1587 }
1592 {
1593 m_interactiveMoveResize.unrestricted = set;
1594 }
1596 {
1597 return m_interactiveMoveResize.offset;
1598 }
1599 void setInteractiveMoveOffset(const QPointF &offset)
1600 {
1601 m_interactiveMoveResize.offset = offset;
1602 }
1604 {
1605 return m_interactiveMoveResize.invertedOffset;
1606 }
1607 void setInvertedInteractiveMoveOffset(const QPointF &offset)
1608 {
1609 m_interactiveMoveResize.invertedOffset = offset;
1610 }
1612 {
1613 return m_interactiveMoveResize.initialGeometry;
1614 }
1615 void setMoveResizeGeometry(const QRectF &geo);
1617 {
1618 return m_interactiveMoveResize.gravity;
1619 }
1621 {
1622 m_interactiveMoveResize.gravity = gravity;
1623 }
1625 {
1626 return m_interactiveMoveResize.buttonDown;
1627 }
1629 {
1630 m_interactiveMoveResize.buttonDown = down;
1631 }
1633 {
1634 return m_interactiveMoveResize.startOutput;
1635 }
1636 void checkUnrestrictedInteractiveMoveResize();
1640 void updateCursor();
1641 void startDelayedInteractiveMoveResize();
1642 void stopDelayedInteractiveMoveResize();
1643 bool startInteractiveMoveResize();
1652 virtual bool doStartInteractiveMoveResize();
1653 virtual void doFinishInteractiveMoveResize();
1654 void finishInteractiveMoveResize(bool cancel);
1661 virtual void leaveInteractiveMoveResize();
1662 /*
1663 * Checks if the mouse cursor is near the edge of the screen and if so
1664 * activates quick tiling or maximization
1665 */
1666 void checkQuickTilingMaximizationZones(int xroot, int yroot);
1667 void resetQuickTilingMaximizationZones();
1672 virtual bool isWaitingForInteractiveMoveResizeSync() const;
1679 virtual void doInteractiveResizeSync(const QRectF &rect);
1680 void handleInteractiveMoveResize(qreal x, qreal y, qreal x_root, qreal y_root);
1681 void handleInteractiveMoveResize(const QPointF &local, const QPointF &global);
1682 void dontInteractiveMoveResize();
1683
1684 virtual QSizeF resizeIncrements() const;
1685
1690 Gravity mouseGravity() const;
1691
1692 void setDecoration(std::shared_ptr<KDecoration2::Decoration> decoration);
1693 void startDecorationDoubleClickTimer();
1694 void invalidateDecorationDoubleClickTimer();
1695 void updateDecorationInputShape();
1696
1697 void setDesktopFileName(const QString &name);
1698 QString iconFromDesktopFile() const;
1699
1700 void updateApplicationMenuServiceName(const QString &serviceName);
1701 void updateApplicationMenuObjectPath(const QString &objectPath);
1702
1703 void setUnresponsive(bool unresponsive);
1704
1705 virtual void setShortcutInternal();
1706 QString shortcutCaptionSuffix() const;
1707 virtual void updateCaption() = 0;
1708
1709 void startShadeHoverTimer();
1710 void startShadeUnhoverTimer();
1711 void shadeHover();
1712 void shadeUnhover();
1713
1714 // The geometry that the window should be restored when the virtual keyboard closes
1715 QRectF keyboardGeometryRestore() const;
1716 void setKeyboardGeometryRestore(const QRectF &geom);
1717
1718 QRectF moveToArea(const QRectF &geometry, const QRectF &oldArea, const QRectF &newArea);
1719 QRectF ensureSpecialStateGeometry(const QRectF &geometry);
1720
1721 void cleanTabBox();
1722 void maybeSendFrameCallback();
1723
1724 Output *m_output = nullptr;
1729 bool m_hidden = false;
1730 bool m_hiddenByShowDesktop = false;
1731
1732 int m_refCount = 1;
1734 std::unique_ptr<WindowItem> m_windowItem;
1735 std::unique_ptr<Shadow> m_shadow;
1740 QPointer<SurfaceInterface> m_surface;
1741 qreal m_opacity = 1.0;
1742 int m_stackingOrder = 0;
1743
1744 bool m_skipTaskbar = false;
1748 bool m_originalSkipTaskbar = false;
1749 bool m_skipPager = false;
1750 bool m_skipSwitcher = false;
1751 QIcon m_icon;
1752 bool m_active = false;
1753 bool m_deleted = false;
1754 bool m_keepAbove = false;
1755 bool m_keepBelow = false;
1756 bool m_demandsAttention = false;
1757 bool m_minimized = false;
1758 bool m_suspended = false;
1759 QTimer *m_autoRaiseTimer = nullptr;
1760 QTimer *m_shadeHoverTimer = nullptr;
1761 ShadeMode m_shadeMode = ShadeNone;
1762 QList<VirtualDesktop *> m_desktops;
1763
1764 QStringList m_activityList;
1765 int m_activityUpdatesBlocked = 0;
1766 bool m_blockedActivityUpdatesRequireTransients = false;
1767
1769 std::shared_ptr<Decoration::DecorationPalette> m_palette;
1770 static QHash<QString, std::weak_ptr<Decoration::DecorationPalette>> s_palettes;
1771 static std::shared_ptr<Decoration::DecorationPalette> s_defaultPalette;
1772
1773 PlasmaWindowInterface *m_windowManagementInterface = nullptr;
1774
1775 Window *m_transientFor = nullptr;
1776 QList<Window *> m_transients;
1777 bool m_modal = false;
1779 QPointer<Tile> m_tile;
1780
1781 // electric border/quick tiling
1782 QuickTileMode m_electricMode = QuickTileFlag::None;
1784 bool m_electricMaximizing = false;
1785 // The quick tile mode of this window.
1786 int m_quickTileMode = int(QuickTileFlag::None);
1787 QTimer *m_electricMaximizingDelay = nullptr;
1788
1789 // geometry
1790 int m_blockGeometryUpdates = 0; // > 0 = New geometry is remembered, but not actually set
1791 MoveResizeMode m_pendingMoveResizeMode = MoveResizeMode::None;
1799
1800 struct
1801 {
1802 bool enabled = false;
1803 bool unrestricted = false;
1804 QPointF offset;
1808 Gravity gravity = Gravity::None;
1809 bool buttonDown = false;
1810 CursorShape cursor = Qt::ArrowCursor;
1811 Output *startOutput = nullptr;
1812 QTimer *delayedTimer = nullptr;
1813 uint32_t counter = 0;
1816 } m_interactiveMoveResize;
1817
1818 struct
1819 {
1820 std::shared_ptr<KDecoration2::Decoration> decoration;
1821 QPointer<Decoration::DecoratedClientImpl> client;
1822 QElapsedTimer doubleClickTimer;
1824 } m_decoration;
1826
1827 bool m_applicationMenuActive = false;
1830
1831 bool m_unresponsive = false;
1832
1833 QKeySequence _shortcut;
1834
1836 quint32 m_lastUsageSerial = 0;
1837 bool m_lockScreenOverlay = false;
1838 uint32_t m_offscreenRenderCount = 0;
1840};
1841
1846{
1847public:
1849 : cl(c)
1850 {
1851 cl->blockGeometryUpdates(true);
1852 }
1854 {
1855 cl->blockGeometryUpdates(false);
1856 }
1857
1858private:
1859 Window *cl;
1860};
1861
1862inline QRectF Window::bufferGeometry() const
1863{
1864 return m_bufferGeometry;
1865}
1866
1867inline QRectF Window::clientGeometry() const
1868{
1869 return m_clientGeometry;
1870}
1871
1872inline QSizeF Window::clientSize() const
1873{
1874 return m_clientGeometry.size();
1875}
1876
1877inline QRectF Window::frameGeometry() const
1878{
1879 return m_frameGeometry;
1880}
1881
1882inline QSizeF Window::size() const
1883{
1884 return m_frameGeometry.size();
1885}
1886
1887inline QPointF Window::pos() const
1888{
1889 return m_frameGeometry.topLeft();
1890}
1891
1892inline qreal Window::x() const
1893{
1894 return m_frameGeometry.x();
1895}
1896
1897inline qreal Window::y() const
1898{
1899 return m_frameGeometry.y();
1900}
1901
1902inline qreal Window::width() const
1903{
1904 return m_frameGeometry.width();
1905}
1906
1907inline qreal Window::height() const
1908{
1909 return m_frameGeometry.height();
1910}
1911
1912inline QRectF Window::rect() const
1913{
1914 return QRectF(0, 0, width(), height());
1915}
1916
1917inline bool Window::readyForPainting() const
1918{
1919 return ready_for_painting;
1920}
1921
1922inline bool Window::isDesktop() const
1923{
1924 return windowType() == NET::Desktop;
1925}
1926
1927inline bool Window::isDock() const
1928{
1929 return windowType() == NET::Dock;
1930}
1931
1932inline bool Window::isMenu() const
1933{
1934 return windowType() == NET::Menu;
1935}
1936
1937inline bool Window::isToolbar() const
1938{
1939 return windowType() == NET::Toolbar;
1940}
1941
1942inline bool Window::isSplash() const
1943{
1944 return windowType() == NET::Splash;
1945}
1946
1947inline bool Window::isUtility() const
1948{
1949 return windowType() == NET::Utility;
1950}
1951
1952inline bool Window::isDialog() const
1953{
1954 return windowType() == NET::Dialog;
1955}
1956
1957inline bool Window::isNormalWindow() const
1958{
1959 return windowType() == NET::Normal;
1960}
1961
1962inline bool Window::isDropdownMenu() const
1963{
1964 return windowType() == NET::DropdownMenu;
1965}
1966
1967inline bool Window::isPopupMenu() const
1968{
1969 return windowType() == NET::PopupMenu;
1970}
1971
1972inline bool Window::isTooltip() const
1973{
1974 return windowType() == NET::Tooltip;
1975}
1976
1977inline bool Window::isNotification() const
1978{
1979 return windowType() == NET::Notification;
1980}
1981
1983{
1984 return windowType() == NET::CriticalNotification;
1985}
1986
1987inline bool Window::isAppletPopup() const
1988{
1989 return windowType() == NET::AppletPopup;
1990}
1991
1992inline bool Window::isOnScreenDisplay() const
1993{
1994 return windowType() == NET::OnScreenDisplay;
1995}
1996
1997inline bool Window::isComboBox() const
1998{
1999 return windowType() == NET::ComboBox;
2000}
2001
2002inline bool Window::isDNDIcon() const
2003{
2004 return windowType() == NET::DNDIcon;
2005}
2006
2007inline bool Window::isLockScreen() const
2008{
2009 return false;
2010}
2011
2012inline bool Window::isInputMethod() const
2013{
2014 return false;
2015}
2016
2017inline bool Window::isOutline() const
2018{
2019 return false;
2020}
2021
2022inline bool Window::isInternal() const
2023{
2024 return false;
2025}
2026
2028{
2029 return m_windowItem.get();
2030}
2031
2032inline bool Window::isOnAllDesktops() const
2033{
2034 return desktops().isEmpty();
2035}
2036
2037inline bool Window::isOnAllActivities() const
2038{
2039 return activities().isEmpty();
2040}
2041
2042inline bool Window::isOnActivity(const QString &activity) const
2043{
2044 return activities().isEmpty() || activities().contains(activity);
2045}
2046
2047inline QString Window::resourceName() const
2048{
2049 return resource_name; // it is always lowercase
2050}
2051
2052inline QString Window::resourceClass() const
2053{
2054 return resource_class; // it is always lowercase
2055}
2056
2058{
2059 return m_clientMachine;
2060}
2061
2062template<class T, class U>
2063inline T *Window::findInList(const QList<T *> &list, std::function<bool(const U *)> func)
2064{
2065 static_assert(std::is_base_of<U, T>::value,
2066 "U must be derived from T");
2067 const auto it = std::find_if(list.begin(), list.end(), func);
2068 if (it == list.end()) {
2069 return nullptr;
2070 }
2071 return *it;
2072}
2073
2074inline bool Window::isPopupWindow() const
2075{
2076 switch (windowType()) {
2077 case NET::ComboBox:
2078 case NET::DropdownMenu:
2079 case NET::PopupMenu:
2080 case NET::Tooltip:
2081 return true;
2082
2083 default:
2084 return false;
2085 }
2086}
2087
2088inline const QList<Window *> &Window::transients() const
2089{
2090 return m_transients;
2091}
2092
2094{
2095 return m_blockGeometryUpdates != 0;
2096}
2097
2102
2107
2112
2117
2118KWIN_EXPORT QDebug operator<<(QDebug debug, const Window *window);
2119
2121{
2122public:
2126
2127private:
2128 QPointer<Window> m_window;
2129};
2130
2131} // namespace KWin
2132
2134Q_DECLARE_METATYPE(QList<KWin::Window *>)
2135Q_DECLARE_OPERATORS_FOR_FLAGS(KWin::Window::SameApplicationChecks)
Wrapper round Qt::CursorShape with extensions enums into a single entity.
Definition cursor.h:50
Representation of a window used by/for Effect classes.
GeometryUpdatesBlocker(Window *c)
Definition window.h:1848
Class representing a Window's Shadow to be rendered by the Compositor.
Definition shadow.h:48
Resource representing a wl_surface.
Definition surface.h:80
std::unique_ptr< Shadow > m_shadow
Definition window.h:1735
void interactiveMoveResizeStarted()
void maximizeableChanged(bool)
bool originalSkipTaskbar() const
Definition window.h:866
virtual QRectF resizeWithChecks(const QRectF &geometry, const QSizeF &s)=0
QTimer m_offscreenFramecallbackTimer
Definition window.h:1839
QPointF interactiveMoveOffset() const
Definition window.h:1595
void maximizedChanged()
QPointF pos
Definition window.h:79
bool isOnActivity(const QString &activity) const
Definition window.h:2042
void skipSwitcherChanged()
virtual bool hasPopupGrab() const
Definition window.h:817
QString m_desktopFileName
Definition window.h:1825
WindowItem * windowItem() const
Definition window.h:2027
virtual void updateCaption()=0
void stackingOrderChanged()
QRectF frameGeometry
Definition window.h:431
Output * m_moveResizeOutput
Definition window.h:1793
void frameGeometryAboutToChange()
QString m_applicationMenuServiceName
Definition window.h:1828
void inputTransformationChanged()
QList< VirtualDesktop * > m_desktops
Definition window.h:1762
QRectF m_bufferGeometry
Definition window.h:1727
QPointF offset
Definition window.h:1804
bool isInteractiveMoveResizePointerButtonDown() const
Definition window.h:1624
Window * transientFor()
QPointer< Tile > m_tile
Definition window.h:1779
bool isInteractiveMove() const
Definition window.h:1107
void skipCloseAnimationChanged()
void iconChanged()
bool isPopupMenu() const
Definition window.h:1967
void shadeableChanged(bool)
QRectF bufferGeometry
Definition window.h:69
MoveResizeMode m_pendingMoveResizeMode
Definition window.h:1791
void interactiveMoveResizeStepped(const QRectF &geometry)
virtual bool acceptsFocus() const =0
bool isComboBox() const
Definition window.h:1997
void setInteractiveMoveResizePointerButtonDown(bool down)
Definition window.h:1628
QRectF initialInteractiveMoveResizeGeometry() const
Definition window.h:1611
qreal width
Definition window.h:99
ClientMachine * clientMachine() const
Definition window.h:2057
QRectF m_electricGeometryRestore
Definition window.h:1783
bool isNotification() const
Definition window.h:1977
virtual bool isOutline() const
Definition window.h:2017
bool isTooltip() const
Definition window.h:1972
bool isDialog() const
Definition window.h:1952
QString desktopFileName() const
Definition window.h:1221
bool applicationMenuActive() const
Definition window.h:1252
void skipPagerChanged()
bool isUnrestrictedInteractiveMoveResize() const
Definition window.h:1584
void setInteractiveMoveResize(bool enabled)
Definition window.h:1577
QRectF m_maximizeGeometryRestore
Definition window.h:1796
bool isDemandingAttention() const
Definition window.h:910
bool m_skipCloseAnimation
Definition window.h:1739
QSizeF size
Definition window.h:84
bool isShade() const
Definition window.h:1034
std::unique_ptr< WindowItem > m_windowItem
Definition window.h:1734
void lockScreenOverlayChanged()
void decorationChanged()
void fullScreenChanged()
virtual void destroyWindow()=0
void demandsAttentionChanged()
void readyForPaintingChanged()
CursorShape cursor() const
Definition window.h:1121
bool isNormalWindow() const
Definition window.h:1957
QList< Window * > m_transients
Definition window.h:1776
bool isOnScreenDisplay() const
Definition window.h:1992
bool readyForPainting() const
Definition window.h:1917
bool isInteractiveMoveResize() const
Definition window.h:1570
void windowShown(KWin::Window *window)
QUuid m_internalId
Definition window.h:1733
virtual void killWindow()=0
QString applicationMenuObjectPath() const
Definition window.h:1262
static std::shared_ptr< Decoration::DecorationPalette > s_defaultPalette
Definition window.h:1771
PlasmaWindowInterface * windowManagementInterface() const
Definition window.h:1307
std::shared_ptr< KDecoration2::Decoration > decoration
Definition window.h:1820
QRectF m_frameGeometry
Definition window.h:1725
virtual bool isPopupWindow() const
Definition window.h:2074
void surfaceChanged()
void setInteractiveMoveResizeGravity(Gravity gravity)
Definition window.h:1620
void opacityChanged(KWin::Window *window, qreal oldOpacity)
QRectF initialGeometryRestore
Definition window.h:1807
bool isCriticalNotification() const
Definition window.h:1982
QuickTileMode electricBorderMode() const
Definition window.h:1527
virtual QString captionSuffix() const =0
void clientGeometryChanged(const QRectF &oldGeometry)
bool hasNETSupport() const
virtual bool isMovableAcrossScreens() const =0
bool keepAbove() const
Definition window.h:898
void applicationMenuChanged()
QKeySequence _shortcut
Definition window.h:1833
static T * findInList(const QList< T * > &list, std::function< bool(const U *)> func)
Finds the Window matching the condition expressed in func in list.
Definition window.h:2063
bool isOnAllDesktops() const
Definition window.h:2032
void shadeChanged()
QSizeF clientSize() const
Definition window.h:1872
virtual bool isInternal() const
Definition window.h:2022
bool isInteractiveResize() const
Definition window.h:1114
void tileChanged(KWin::Tile *tile)
void modalChanged()
virtual bool takeFocus()=0
void interactiveMoveResizeFinished()
bool isAppletPopup() const
Definition window.h:1987
void hasApplicationMenuChanged(bool)
void colorSchemeChanged()
void windowRoleChanged()
QuickTileMode quickTileMode() const
Definition window.h:1096
bool isMenu() const
Definition window.h:1932
bool isUtility() const
Definition window.h:1947
void setUnrestrictedInteractiveMoveResize(bool set)
Definition window.h:1591
void keepAboveChanged(bool)
bool skipSwitcher() const
Definition window.h:854
WindowRules m_rules
Definition window.h:1835
virtual void closeWindow()=0
void minimizeableChanged(bool)
QRectF m_fullscreenGeometryRestore
Definition window.h:1797
void outputChanged()
void setInteractiveMoveOffset(const QPointF &offset)
Definition window.h:1599
bool isMinimized() const
Definition window.h:988
QPointer< SurfaceInterface > m_surface
Definition window.h:1740
void applicationMenuActiveChanged(bool)
virtual bool belongsToSameApplication(const Window *other, SameApplicationChecks checks) const =0
QPointF invertedInteractiveMoveOffset() const
Definition window.h:1603
void desktopsChanged()
QString resourceClass
Definition window.h:115
qreal y
Definition window.h:94
QElapsedTimer doubleClickTimer
Definition window.h:1822
bool isActive() const
Definition window.h:882
bool isDecorated() const
Definition window.h:1162
bool isDesktop() const
Definition window.h:1922
void quickTileModeChanged()
virtual bool isLockScreen() const
Definition window.h:2007
qreal x
Definition window.h:89
QList< KWin::VirtualDesktop * > desktops
Definition window.h:295
virtual bool isMovable() const =0
bool isToolbar() const
Definition window.h:1937
virtual QString captionNormal() const =0
void skipTaskbarChanged()
QString resourceName
Definition window.h:114
void moveResizedChanged()
Output * interactiveMoveResizeStartOutput() const
Definition window.h:1632
QString resource_class
Definition window.h:1737
void paletteChanged(const QPalette &p)
@ SizeModeFixedW
Try not to affect width.
Definition window.h:670
@ SizeModeFixedH
Try not to affect height.
Definition window.h:671
virtual bool isCloseable() const =0
static QHash< QString, std::weak_ptr< Decoration::DecorationPalette > > s_palettes
Definition window.h:1770
std::shared_ptr< Decoration::DecorationPalette > m_palette
Definition window.h:1769
QString m_colorScheme
Definition window.h:1768
virtual std::unique_ptr< WindowItem > createItem(Scene *scene)=0
void blockGeometryUpdates(bool block)
Definition window.cpp:1150
QRectF m_virtualKeyboardGeometry
Definition window.h:1798
QRectF initialGeometry
Definition window.h:1806
void hiddenByShowDesktopChanged()
QuickTileMode initialQuickTileMode
Definition window.h:1815
QStringList activities
Definition window.h:305
void desktopFileNameChanged()
bool ready_for_painting
Definition window.h:1728
QRectF rect
Definition window.h:113
void bufferGeometryChanged(const QRectF &oldGeometry)
void maximizedAboutToChange(MaximizeMode mode)
void closeableChanged(bool)
const WindowRules * rules() const
Definition window.h:1048
bool isSplash() const
Definition window.h:1942
int m_blockGeometryUpdates
Definition window.h:1790
const QList< Window * > & transients() const
Definition window.h:2088
qreal height
Definition window.h:104
void minimizedChanged()
QString resource_name
Definition window.h:1736
void unblockGeometryUpdates()
Definition window.h:2103
MoveResizeMode pendingMoveResizeMode() const
Definition window.h:2108
virtual void popupDone()
Definition window.h:829
void blockGeometryUpdates()
Definition window.h:2098
int windowType
Definition window.h:224
QString applicationMenuServiceName() const
Definition window.h:1258
bool isElectricBorderMaximizing() const
Definition window.h:1532
bool isDock() const
Definition window.h:1927
void frameGeometryChanged(const QRectF &oldGeometry)
bool isDropdownMenu() const
Definition window.h:1962
virtual bool isInputMethod() const
Definition window.h:2012
void captionNormalChanged()
QRegion inputRegion
Definition window.h:1823
void activitiesChanged()
void setInvertedInteractiveMoveOffset(const QPointF &offset)
Definition window.h:1607
virtual NET::WindowType windowType() const =0
virtual bool isResizable() const =0
void activeChanged()
bool skipPager() const
Definition window.h:871
void shadowChanged()
bool keepBelow() const
Definition window.h:903
void keepBelowChanged(bool)
QPointer< Decoration::DecoratedClientImpl > client
Definition window.h:1821
bool isDNDIcon() const
Definition window.h:2002
void windowHidden(KWin::Window *window)
void unresponsiveChanged(bool)
const QIcon & icon() const
Definition window.h:877
void damaged(KWin::Window *window)
void visibleGeometryChanged()
void windowClassChanged()
QUuid internalId() const
Definition window.h:846
bool areGeometryUpdatesBlocked() const
Definition window.h:2093
bool isOnAllActivities() const
Definition window.h:2037
MaximizeMode initialMaximizeMode
Definition window.h:1814
void hiddenChanged()
QRectF m_clientGeometry
Definition window.h:1726
KDecoration2::Decoration * decoration()
Definition window.h:1154
const QKeySequence & shortcut() const
Definition window.h:979
void setPendingMoveResizeMode(MoveResizeMode mode)
Definition window.h:2113
QPointF invertedOffset
Definition window.h:1805
void updateQuickTileMode(QuickTileMode newMode)
Definition window.h:1539
ClientMachine * m_clientMachine
Definition window.h:1738
QRectF clientGeometry
Definition window.h:74
virtual Window * findModal(bool allow_itself=false)=0
QIcon m_icon
Definition window.h:1751
Gravity interactiveMoveResizeGravity() const
Definition window.h:1616
virtual bool wantsInput() const =0
void captionChanged()
const KDecoration2::Decoration * decoration() const
Definition window.h:1158
QRectF m_keyboardGeometryRestore
Definition window.h:1795
void transientChanged()
virtual void checkActivities()
Definition window.h:749
QStringList m_activityList
Definition window.h:1764
QRectF m_moveResizeGeometry
Definition window.h:1794
virtual void moveResizeInternal(const QRectF &rect, MoveResizeMode mode)=0
bool skipTaskbar() const
Definition window.h:860
QString m_applicationMenuObjectPath
Definition window.h:1829
void moveResizeCursorChanged(CursorShape)
Q_DECLARE_METATYPE(KWin::SwitchEvent::State)
Gravity
Definition globals.h:150
ShadeMode
Definition common.h:62
@ ShadeNone
Definition common.h:63
@ ShadeNormal
Definition common.h:64
QDebug & operator<<(QDebug &s, const KWin::DrmConnector *obj)
MaximizeMode
Definition common.h:74
StrutArea
Definition common.h:35
QList< StrutRect > StrutRects
Definition common.h:60
Layer
Definition globals.h:162
@ UnknownLayer
Definition globals.h:163