mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 10:22:49 +00:00
kwin: remove fullscreen hack
there never was a way to enable it (not via gui anyway) meaning the bits are doing nothing (other than slow down kwin that is) Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
df90948b17
commit
a49fd23243
6 changed files with 12 additions and 100 deletions
|
@ -82,9 +82,8 @@ class Client
|
|||
**/
|
||||
Q_PROPERTY(bool onAllDesktops READ isOnAllDesktops WRITE setOnAllDesktops NOTIFY desktopChanged)
|
||||
/**
|
||||
* Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property
|
||||
* or through a legacy support hack. The fullScreen state can only be changed if the Client does not
|
||||
* use the legacy hack. To be sure whether the state changed, connect to the notify signal.
|
||||
* Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property.
|
||||
* To be sure whether the state changed, connect to the notify signal.
|
||||
**/
|
||||
Q_PROPERTY(bool fullScreen READ isFullScreen WRITE setFullScreen NOTIFY fullScreenChanged)
|
||||
/**
|
||||
|
@ -366,7 +365,7 @@ public:
|
|||
|
||||
void setFullScreen(bool set, bool user = true);
|
||||
bool isFullScreen() const;
|
||||
bool isFullScreenable(bool fullscreen_hack = false) const;
|
||||
bool isFullScreenable() const;
|
||||
bool isActiveFullScreen() const;
|
||||
bool userCanSetFullScreen() const;
|
||||
QRect geometryFSRestore() const {
|
||||
|
@ -719,8 +718,7 @@ private:
|
|||
void updateAllowedActions(bool force = false);
|
||||
QRect fullscreenMonitorsArea(NETFullscreenMonitors topology) const;
|
||||
void changeMaximize(bool horizontal, bool vertical, bool adjust);
|
||||
int checkFullScreenHack(const QRect& geom) const; // 0 - None, 1 - One xinerama screen, 2 - Full area
|
||||
void updateFullScreenHack(const QRect& geom);
|
||||
void updateFullScreen();
|
||||
void getWmNormalHints();
|
||||
void getMotifHints();
|
||||
void getIcons();
|
||||
|
@ -868,8 +866,7 @@ private:
|
|||
// DON'T reorder - Saved to config files !!!
|
||||
enum FullScreenMode {
|
||||
FullScreenNone,
|
||||
FullScreenNormal,
|
||||
FullScreenHack ///< Non-NETWM fullscreen (noborder and size of desktop)
|
||||
FullScreenNormal
|
||||
};
|
||||
FullScreenMode fullscreen_mode;
|
||||
MaximizeMode max_mode;
|
||||
|
|
|
@ -1655,7 +1655,7 @@ void Client::configureRequest(int value_mask, int rx, int ry, int rw, int rh, in
|
|||
move(new_pos);
|
||||
plainResize(ns);
|
||||
setGeometry(QRect(calculateGravitation(false, gravity), size()));
|
||||
updateFullScreenHack(QRect(new_pos, QSize(nw, nh)));
|
||||
updateFullScreen();
|
||||
QRect area = workspace()->clientArea(WorkArea, this);
|
||||
if (!from_tool && (!isSpecialWindow() || isToolbar()) && !isFullScreen()
|
||||
&& area.contains(origClientGeometry))
|
||||
|
@ -1682,11 +1682,8 @@ void Client::configureRequest(int value_mask, int rx, int ry, int rw, int rh, in
|
|||
if (ns != size()) { // don't restore if some app sets its own size again
|
||||
QRect origClientGeometry(pos() + clientPos(), clientSize());
|
||||
GeometryUpdatesBlocker blocker(this);
|
||||
int save_gravity = xSizeHint.win_gravity;
|
||||
xSizeHint.win_gravity = gravity;
|
||||
resizeWithChecks(ns);
|
||||
xSizeHint.win_gravity = save_gravity;
|
||||
updateFullScreenHack(QRect(calculateGravitation(true, xSizeHint.win_gravity), QSize(nw, nh)));
|
||||
updateFullScreen();
|
||||
if (!from_tool && (!isSpecialWindow() || isToolbar()) && !isFullScreen()) {
|
||||
// try to keep the window in its xinerama screen if possible,
|
||||
// if that fails at least keep it visible somewhere
|
||||
|
@ -2348,12 +2345,10 @@ void Client::changeMaximize(bool vertical, bool horizontal, bool adjust)
|
|||
updateWindowRules(Rules::MaximizeVert|Rules::MaximizeHoriz|Rules::Position|Rules::Size);
|
||||
}
|
||||
|
||||
bool Client::isFullScreenable(bool fullscreen_hack) const
|
||||
bool Client::isFullScreenable() const
|
||||
{
|
||||
if (!rules()->checkFullScreen(true))
|
||||
return false;
|
||||
if (fullscreen_hack)
|
||||
return isNormalWindow();
|
||||
if (rules()->checkStrictGeometry(true)) { // allow rule to ignore geometry constraints
|
||||
QRect fsarea = workspace()->clientArea(FullScreenArea, this);
|
||||
if (sizeForClientSize(fsarea.size(), SizemodeAny, true) != fsarea.size())
|
||||
|
@ -2365,9 +2360,7 @@ bool Client::isFullScreenable(bool fullscreen_hack) const
|
|||
|
||||
bool Client::userCanSetFullScreen() const
|
||||
{
|
||||
if (fullscreen_mode == FullScreenHack)
|
||||
return false;
|
||||
if (!isFullScreenable(false))
|
||||
if (!isFullScreenable())
|
||||
return false;
|
||||
return isNormalWindow() || isDialog();
|
||||
}
|
||||
|
@ -2376,8 +2369,6 @@ void Client::setFullScreen(bool set, bool user)
|
|||
{
|
||||
if (!isFullScreen() && !set)
|
||||
return;
|
||||
if (fullscreen_mode == FullScreenHack)
|
||||
return;
|
||||
if (user && !userCanSetFullScreen())
|
||||
return;
|
||||
set = rules()->checkFullScreen(set && !isSpecialWindow());
|
||||
|
@ -2468,42 +2459,8 @@ QRect Client::fullscreenMonitorsArea(NETFullscreenMonitors requestedTopology) co
|
|||
return total;
|
||||
}
|
||||
|
||||
|
||||
int Client::checkFullScreenHack(const QRect& geom) const
|
||||
void Client::updateFullScreen()
|
||||
{
|
||||
if (!options->isLegacyFullscreenSupport())
|
||||
return 0;
|
||||
// if it's noborder window, and has size of one screen or the whole desktop geometry, it's fullscreen hack
|
||||
if (noBorder() && app_noborder && isFullScreenable(true)) {
|
||||
if (geom.size() == workspace()->clientArea(FullArea, geom.center(), desktop()).size())
|
||||
return 2; // full area fullscreen hack
|
||||
if (geom.size() == workspace()->clientArea(ScreenArea, geom.center(), desktop()).size())
|
||||
return 1; // xinerama-aware fullscreen hack
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Client::updateFullScreenHack(const QRect& geom)
|
||||
{
|
||||
int type = checkFullScreenHack(geom);
|
||||
if (fullscreen_mode == FullScreenNone && type != 0) {
|
||||
fullscreen_mode = FullScreenHack;
|
||||
updateDecoration(false, false);
|
||||
QRect geom;
|
||||
if (rules()->checkStrictGeometry(false)) {
|
||||
geom = type == 2 // 1 - it's xinerama-aware fullscreen hack, 2 - it's full area
|
||||
? workspace()->clientArea(FullArea, geom.center(), desktop())
|
||||
: workspace()->clientArea(ScreenArea, geom.center(), desktop());
|
||||
} else
|
||||
geom = workspace()->clientArea(FullScreenArea, geom.center(), desktop());
|
||||
setGeometry(geom);
|
||||
emit fullScreenChanged();
|
||||
} else if (fullscreen_mode == FullScreenHack && type == 0) {
|
||||
fullscreen_mode = FullScreenNone;
|
||||
updateDecoration(false, false);
|
||||
// whoever called this must setup correct geometry
|
||||
emit fullScreenChanged();
|
||||
}
|
||||
StackingUpdatesBlocker blocker(workspace());
|
||||
workspace()->updateClientLayer(this); // active fullscreens get different layer
|
||||
}
|
||||
|
|
|
@ -108,9 +108,6 @@
|
|||
<entry name="RollOverDesktops" type="Bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="LegacyFullscreenSupport" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="FocusStealingPreventionLevel" type="Int">
|
||||
<default>1</default>
|
||||
<min>0</min>
|
||||
|
|
|
@ -220,17 +220,6 @@ bool Client::manage(xcb_window_t w, bool isMapped)
|
|||
area = workspace()->clientArea(PlacementArea, screens()->geometry(screen).center(), desktop());
|
||||
}
|
||||
|
||||
if (int type = checkFullScreenHack(geom)) {
|
||||
fullscreen_mode = FullScreenHack;
|
||||
if (rules()->checkStrictGeometry(false)) {
|
||||
geom = type == 2 // 1 = It's xinerama-aware fullscreen hack, 2 = It's full area
|
||||
? workspace()->clientArea(FullArea, geom.center(), desktop())
|
||||
: workspace()->clientArea(ScreenArea, geom.center(), desktop());
|
||||
} else
|
||||
geom = workspace()->clientArea(FullScreenArea, geom.center(), desktop());
|
||||
placementDone = true;
|
||||
}
|
||||
|
||||
if (isDesktop())
|
||||
// KWin doesn't manage desktop windows
|
||||
placementDone = true;
|
||||
|
@ -467,9 +456,7 @@ bool Client::manage(xcb_window_t w, bool isMapped)
|
|||
if (session->maximized != MaximizeRestore) {
|
||||
maximize(MaximizeMode(session->maximized));
|
||||
}
|
||||
if (session->fullscreen == FullScreenHack)
|
||||
; // Nothing, this should be already set again above
|
||||
else if (session->fullscreen != FullScreenNone) {
|
||||
if (session->fullscreen != FullScreenNone) {
|
||||
setFullScreen(true, false);
|
||||
geom_fs_restore = session->fsrestore;
|
||||
}
|
||||
|
@ -499,7 +486,6 @@ bool Client::manage(xcb_window_t w, bool isMapped)
|
|||
demandAttention();
|
||||
if (info->state() & NET::Modal)
|
||||
setModal(true);
|
||||
if (fullscreen_mode != FullScreenHack)
|
||||
setFullScreen(rules()->checkFullScreen(info->state() & NET::FullScreen, !isMapped), false);
|
||||
}
|
||||
|
||||
|
|
|
@ -88,7 +88,6 @@ Options::Options(QObject *parent)
|
|||
, m_showDesktopIsMinimizeAll(false)
|
||||
, m_rollOverDesktops(false)
|
||||
, m_focusStealingPreventionLevel(0)
|
||||
, m_legacyFullscreenSupport(false)
|
||||
, m_killPingTimeout(0)
|
||||
, m_hideUtilityWindowsForInactive(false)
|
||||
, m_inactiveTabsSkipTaskbar(false)
|
||||
|
@ -314,15 +313,6 @@ void Options::setFocusStealingPreventionLevel(int focusStealingPreventionLevel)
|
|||
emit focusStealingPreventionLevelChanged();
|
||||
}
|
||||
|
||||
void Options::setLegacyFullscreenSupport(bool legacyFullscreenSupport)
|
||||
{
|
||||
if (m_legacyFullscreenSupport == legacyFullscreenSupport) {
|
||||
return;
|
||||
}
|
||||
m_legacyFullscreenSupport = legacyFullscreenSupport;
|
||||
emit legacyFullscreenSupportChanged();
|
||||
}
|
||||
|
||||
void Options::setOperationTitlebarDblClick(WindowOperation operationTitlebarDblClick)
|
||||
{
|
||||
if (OpTitlebarDblClick == operationTitlebarDblClick) {
|
||||
|
@ -709,7 +699,6 @@ void Options::syncFromKcfgc()
|
|||
setNextFocusPrefersMouse(m_settings->nextFocusPrefersMouse());
|
||||
setSeparateScreenFocus(m_settings->separateScreenFocus());
|
||||
setRollOverDesktops(m_settings->rollOverDesktops());
|
||||
setLegacyFullscreenSupport(m_settings->legacyFullscreenSupport());
|
||||
setFocusStealingPreventionLevel(m_settings->focusStealingPreventionLevel());
|
||||
setPlacement(m_settings->placement());
|
||||
setAutoRaise(m_settings->autoRaise());
|
||||
|
|
|
@ -101,10 +101,6 @@ class Options : public QObject, public KDecorationOptions
|
|||
* 0 - 4 , see Workspace::allowClientActivation()
|
||||
**/
|
||||
Q_PROPERTY(int focusStealingPreventionLevel READ focusStealingPreventionLevel WRITE setFocusStealingPreventionLevel NOTIFY focusStealingPreventionLevelChanged)
|
||||
/**
|
||||
* support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry
|
||||
*/
|
||||
Q_PROPERTY(bool legacyFullscreenSupport READ isLegacyFullscreenSupport WRITE setLegacyFullscreenSupport NOTIFY legacyFullscreenSupportChanged)
|
||||
Q_PROPERTY(WindowOperation operationTitlebarDblClick READ operationTitlebarDblClick WRITE setOperationTitlebarDblClick NOTIFY operationTitlebarDblClickChanged)
|
||||
Q_PROPERTY(MouseCommand commandActiveTitlebar1 READ commandActiveTitlebar1 WRITE setCommandActiveTitlebar1 NOTIFY commandActiveTitlebar1Changed)
|
||||
Q_PROPERTY(MouseCommand commandActiveTitlebar2 READ commandActiveTitlebar2 WRITE setCommandActiveTitlebar2 NOTIFY commandActiveTitlebar2Changed)
|
||||
|
@ -313,13 +309,6 @@ public:
|
|||
return m_focusStealingPreventionLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry
|
||||
*/
|
||||
bool isLegacyFullscreenSupport() const {
|
||||
return m_legacyFullscreenSupport;
|
||||
}
|
||||
|
||||
WindowOperation operationTitlebarDblClick() const {
|
||||
return OpTitlebarDblClick;
|
||||
}
|
||||
|
@ -517,7 +506,6 @@ public:
|
|||
void setShowDesktopIsMinimizeAll(bool showDesktopIsMinimizeAll);
|
||||
void setRollOverDesktops(bool rollOverDesktops);
|
||||
void setFocusStealingPreventionLevel(int focusStealingPreventionLevel);
|
||||
void setLegacyFullscreenSupport(bool legacyFullscreenSupport);
|
||||
void setOperationTitlebarDblClick(WindowOperation operationTitlebarDblClick);
|
||||
void setCommandActiveTitlebar1(MouseCommand commandActiveTitlebar1);
|
||||
void setCommandActiveTitlebar2(MouseCommand commandActiveTitlebar2);
|
||||
|
@ -675,7 +663,6 @@ Q_SIGNALS:
|
|||
void showDesktopIsMinimizeAllChanged();
|
||||
void rollOverDesktopsChanged(bool enabled);
|
||||
void focusStealingPreventionLevelChanged();
|
||||
void legacyFullscreenSupportChanged();
|
||||
void operationTitlebarDblClickChanged();
|
||||
void commandActiveTitlebar1Changed();
|
||||
void commandActiveTitlebar2Changed();
|
||||
|
@ -733,7 +720,6 @@ private:
|
|||
bool m_showDesktopIsMinimizeAll;
|
||||
bool m_rollOverDesktops;
|
||||
int m_focusStealingPreventionLevel;
|
||||
bool m_legacyFullscreenSupport;
|
||||
int m_killPingTimeout;
|
||||
bool m_hideUtilityWindowsForInactive;
|
||||
bool m_inactiveTabsSkipTaskbar;
|
||||
|
|
Loading…
Add table
Reference in a new issue