Commit Graph

497 Commits (2c169e4bca46289536eb96ed105e63d0b5714772)

Author SHA1 Message Date
Thomas Lübking cb88bc8848 keepInArea, client geometry containment condition
Since windows can place the decoration outside the screen
this needs to be still a valid condition when checking
whether we've to keep in area

In addition: calculate tx, ty and perform one move call
(include rule check and XMoveWindow unless there's a geometry
blocker ...)

BUG: 324792
FIXED-IN: 4.11.2
REVIEW: 112805
2013-09-25 23:09:18 +02:00
Thomas Lübking 4c170a2fdb snap to deco, not client on inner screen borders
client snapping is ultimately reasoned by fitt's law
and inner borders are not infinite

BUG: 323504
FIXED-IN: 4.11
REVIEW: 112103
2013-09-25 23:09:17 +02:00
Thomas Lübking feafbca941 Merge branch 'KDE/4.11' 2013-09-24 21:33:46 +02:00
Thomas Lübking 6303c8d573 sanitize user/fullscreenable condition
whether or not a window is maximizable does really not
matter (it's not if the size is locked, so the
maximized size is the only size) but only if the
window can take the fullscreen geometry.

otoh, the size restrictions (maximum size, fixed aspect)
should be honored by default but still ignorable by rule

BUG: 324733
FIXED-IN: 4.11.2
REVIEW: 112654
2013-09-24 21:30:49 +02:00
Martin Gräßlin 969e6b85e7 Merge branch 'master' into frameworks-scratch
Conflicts:
	CMakeLists.txt
	kwin/client.cpp
	kwin/effects/highlightwindow/highlightwindow.cpp
	kwin/libkwineffects/kwingltexture.cpp
	kwin/libkwineffects/kwinxrenderutils.cpp
	kwin/scene_opengl.cpp
	kwin/workspace.cpp
	plasma/desktop/applets/kickoff/CMakeLists.txt
	plasma/desktop/applets/taskmanager/package/contents/code/tools.js
	plasma/desktop/applets/taskmanager/package/contents/ui/Task.qml
	plasma/desktop/applets/taskmanager/package/contents/ui/main.qml
	plasma/desktop/applets/taskmanager/package/metadata.desktop
	plasma/desktop/applets/taskmanager/plugin/textlabel.h
	plasma/desktop/applets/tasks/CMakeLists.txt
	plasma/desktop/applets/tasks/package/metadata.desktop
	plasma/desktop/applets/tasks/tasks.cpp
	plasma/desktop/toolboxes/plasma-toolbox-desktoptoolbox.desktop
	plasma/generic/applets/activitybar/activitybar.cpp
	plasma/generic/wallpapers/color/plasma-wallpaper-color.desktop
	plasma/generic/wallpapers/image/plasma-wallpaper-image.desktop
2013-09-24 11:28:38 +02:00
Martin Gräßlin 4576a0b6db Port last UngrabPointer to XCB 2013-09-10 15:30:11 +02:00
Martin Gräßlin 484c61a81e Use Window wrapper methods for manipulating the frame
And by that it's also mostly ported to XCB.
2013-09-10 15:30:10 +02:00
Martin Gräßlin ba7c5936fe Use Client::m_client instead of Toplevel::window() where useful
Allows to use .setGeometry() instead of XMoveResizeWindow.
2013-09-10 15:30:10 +02:00
Martin Gräßlin c616dd45fd Use xcb for move/resize the wrapper 2013-09-10 15:30:10 +02:00
Martin Gräßlin 4ddfd2d4ef Remove no longer needed includes from kwin/geometry.cpp 2013-09-09 06:03:35 +02:00
Thomas Lübking ef351070e7 snap max'd windows to maximize, not movement area
Because that's where it's placed. Notable esp. when there're panels on opposing sides.
Since snapping keeps max'd windows in position, it should preferably keep it in the proper position ;-)

REVIEW: 112322
2013-09-08 23:41:55 +02:00
Martin Gräßlin 211682ab67 KGlobalSettings::dndEventDelay() -> QApplication::startDragDistance() 2013-09-04 16:35:16 +02:00
Martin Gräßlin 139201a2e2 KGlobal::config() -> KSharedConfig::openConfig()
KWin Core says good bye to KGlobal. We will not miss the threading
issues.
2013-09-04 16:11:40 +02:00
Martin Gräßlin 57905c0cc2 And we got rid of KDebug
Usages of kBacktrace got dropped.
2013-09-02 13:14:39 +02:00
Thomas Lübking 2568fcb149 guide partially max'd windows against corner snaps
BUG: 323598
FIXED-IN: 4.11.1
REVIEW: 112124
2013-08-27 07:53:02 +02:00
Martin Gräßlin 9291b18cee Merge branch 'master' into frameworks-scratch
Conflicts:
	CMakeLists.txt
	kwin/effects.cpp
	kwin/effects/logout/logout.cpp
	kwin/effects/presentwindows/main.qml
	kwin/effects/presentwindows/presentwindows.cpp
	kwin/effects/presentwindows/presentwindows.h
	kwin/effects/zoom/zoom_config.cpp
	kwin/libkwineffects/kwinglutils_funcs.cpp
	kwin/libkwineffects/kwinxrenderutils.cpp
	kwin/nvidiahack.cpp
	kwin/xcbutils.h
	plasma/desktop/containments/desktop/plasma-containment-desktop.desktop
	plasma/generic/wallpapers/image/image.cpp
	plasma/generic/wallpapers/image/plasma-wallpaper-image.desktop
2013-08-07 10:10:06 +02:00
Martin Gräßlin 94e4a31370 Port from XLib XSync to xcb sync 2013-07-31 14:05:24 +02:00
Thomas Lübking 0f57c9407a depend titlebar protection dir pref on cap dir
when visualPixels is not 0, this means the titlebar does
not touch an upper/lower border, thus moving that direction
is ok and protection should be sought horizontally

BUG: 322507
FIXED-IN: 4.11
REVIEW: 111573
2013-07-19 21:16:15 +02:00
Thomas Lübking 02ed20662d prevent shrinking away titlebar f. bottom corners
it's the same condition as shriking away from plain edges
(one can resize exclusively in that direction as well)

REVIEW: 111573
2013-07-19 21:14:43 +02:00
Thomas Lübking eb647c7489 do not emit maximizeChange if mode didn't change
BUG: 321638
FIXED-IN: 4.11
REVIEW: 111262
2013-07-01 21:19:53 +02:00
Martin Gräßlin fa6b46ef30 Remove dead assignments
Variable deltaX and deltaY are assigned in the if-else branches, but not
read again after being set in the branches.
2013-06-26 17:58:43 +02:00
Thomas Lübking 725534471e exclude padding from snap delta of screen snap
using the actual delta this casewise causes false
preference for window snapping (less to move)
this restores the pre snap-to-content behavior
in that regard and delta isn't used for anything else.

BUG: 321325
FIXED-IN: 4.11
REVIEW: 111139
2013-06-26 12:42:10 +02:00
Thomas Lübking 774e3ec05b ignore desktops and splashes for snapping
Desktops cannot be resonably snapped or cause
implicit screen snapping and splashes are undemanded
short term clients

REVIEW: 111139
2013-06-26 12:42:10 +02:00
Thomas Lübking cf6acf84b9 deny configure requests to leave QuickTiling
similar to maximization blocking
also ensure the user can permit configure requests
for quick tiled and maximized windows

REVIEW: 111186
BUG: 321491
FIXED-IN: 4.11
2013-06-26 12:42:09 +02:00
Thomas Lübking e4d9ea9209 prevent NW resizing when window has fixed position
CCBUG: 320908
REVIEW: 110895
2013-06-10 16:37:46 +02:00
Thomas Lübking 516ea86341 block quick tiling unless actually moved
REVIEW: 109485
BUG: 289494
FIXED-IN: 4.11
2013-06-05 14:11:00 +02:00
Martin Gräßlin aa55cf98ae Port Client's move resize grab window to XCB
Using Xcb::Window to wrap this helper window and port all the used XLib
calls to XCB.

Also renaming the variable to m_ and camel case to follow general naming
scheme.
2013-05-28 11:55:38 +02:00
Martin Gräßlin 59690ee625 Revert the change for when to emit the maximizedChanged signal
It broke the maximize window effect.

REVIEW: 110468
2013-05-17 11:09:49 +02:00
Martin Gräßlin 4022de7075 Use signal/slots instead of deep function calls into decoration
For all the decoration updates called from Client into the decoration we
also have a signal being emitted. So turning the pure virtual public
functions into slots means we can just connect our existing signals and
get rid off the deep function calls.

The keepAbove/Below signals are changed to take a boolean argument as
needed by KDecoration and a few emitted signals are moved to a better
fitting location.

REVIEW: 110335
2013-05-07 16:53:58 +02:00
Martin Gräßlin 8bd3b28335 Remove dead code path from GeometryTip
Ctor parameter save_under is always false.

In additon include proper needed header instead of client.h.

REVIEW: 110272
2013-05-03 08:20:28 +02:00
Martin Gräßlin cc5d553d65 Change the visual appearance of the composited outline
Uses widgets/translucentbackground as FrameSvg item to ensure that we
don't get a huge black square on the screen.

When bordering a screen edge we disable the border except if all edges
are bordered. This makes a little bit more clear in the quick tiling case
what will be the geometry.

REVIEW: 110176
2013-05-01 19:17:01 +02:00
Martin Gräßlin b6681ddc3a Turn RootInfo into a KWIN_SINGLETON
It's not a typical singleton as the ctor is not taking a Workspace* and
needs addtional data to be passed to NETRootInfo.

All the initialization code is moved to RootInfo::create() and the tear-
down code is moved to RootInfo::destroyed(). This includes the support
window which used to be a member of Workspace. It's only needed by
RootInfo, so there is no need to have the ownership inside Workspace.

Instead of using a QWidget we just create a normal window through xcb.
It gets destroyed again in the tear-down code after the RootInfo got
destroyed.

REVIEW: 110238
2013-05-01 19:14:38 +02:00
Martin Gräßlin db18c08dd0 Move RootInfo and WinInfo into an own header and impl file
Main motivation for this change is that it's unhandy to have the class
definition in workspace.h and client.h while the implementation is in
events.cpp although nothing in events.cpp uses it directly.

By getting it out of workspace.h we get the header a little bit smaller
which should improve compile time given that it's included almost
everywhere.

In events.cpp the enum usage is changed to NETWinInfo as that's the class
where they are defined.

RootInfo does no longer hold a workspace pointer. Where it's needed it
uses the singleton accessor of Workspace.

REVIEW: 110199
2013-04-30 08:06:12 +02:00
Thomas Lübking 7eaacfab18 fix screen update in finishMoveResize
REVIEW: 110056
2013-04-28 17:39:16 +02:00
Martin Gräßlin cd025c7526 Make Outline a KWIN_SINGLETON
Given that Outline is now a QObject hold by Workspace, but not used in
Workspace, it can also be a KWIN_SINGLETON.

REVIEW: 110146
2013-04-25 09:04:02 +02:00
Martin Gräßlin 6d0d9cfe43 Remove KWin::Notifications
Overall all notifications except compositing suspended by DBus were
configured by default to not have any action. This means all the time we
emit a notification we keep DBus and KDED busy for nothing.

All the cases when a notification is triggered ire also exported to
KWin scripting, so if one really needs to handle something in case a
window is moved, it could be done through a KWin script with much more
context about the event.

REVIEW: 110113
BUG: 258097
FIXED-IN: 4.11
2013-04-23 16:23:55 +02:00
Martin Gräßlin 2151382cf1 Remove (un)fullscreen window notification 2013-04-23 16:21:30 +02:00
Martin Gräßlin 466acb7c80 Remove Move/Resize Start/End notifications 2013-04-23 16:21:30 +02:00
Martin Gräßlin 54a12641ae Remove window (un)maximized notifications 2013-04-23 16:21:29 +02:00
Thomas Lübking 2742f6747f Merge branch 'KDE/4.10' 2013-04-16 22:07:22 +02:00
Thomas Lübking 70f9bc29f3 support bordersnapping per axis
a partially max'd client shall only receive aggressive snapping in
the max'd dimension

BUG: 318105
REVIEW: 109951
2013-04-16 22:07:06 +02:00
Thomas Lübking 5d530a64fb don't setMaximize if whe only want changeMaximize
BUG: 318275
FIXED-IN: 4.10.3
REVIEW: 110006
2013-04-16 20:23:28 +02:00
Martin Gräßlin edb074cbc2 Split out screen handling from Workspace into own class Screens
Following the approaches of other split out functionality Screens is a
singleton class created by Workspace.

The class takes over the responsibility for:
* screenChanged signal delayed by timer
* number of screens
* geometry of given screen
* active screen
* config option for active screen follows mouse

The class contains a small abstraction layer and has a concrete subclass
wrapping around QDesktopWidget, but the idea is to go more low level and
interact with XRandR directly to get more detailed information.

All over KWin the usage from QDesktopWidget is ported over to the new
Screens class.

REVIEW: 109839
2013-04-15 10:25:10 +02:00
Thomas Lübking b3adc6254b snap maximized windows to border
BUG: 317845
REVIEW: 109864
2013-04-07 14:47:10 +02:00
Martin Gräßlin 6d6b013720 Introduce a proper screen property in Toplevel
Instead of calculating the screen number each time screen() is invoked,
the screen number gets stored in a private member variable and evaluated
whenever either the screen count changes or the Toplevel's geometry
changes. During move/resize the screen property doesn't get updated. The
update is delayed till the end of the move/resize operation.

REVIEW: 109715
2013-04-02 08:21:01 +02:00
Thomas Lübking 158d060b5f turn "ignore geometry" forcerule into a setrule
and btw. replace legacy "ignoreposition" by "ignoregeometry"

this will allow to use "apply initially" as "force" used to act
(ignore position on placement) and "force" to prevent clients
from reconfiguring themselves (to not break a tabgroup or to just
not be annoying)

BUG: 311720
CCBUG: 252314
REVIEW: 109691
FIXED-IN: 4.11
2013-03-28 20:31:08 +01:00
Thomas Lübking 29e5023cfb fix horizontal constrain in checkWorspacePosition
broke with fe51de8592f5777b57733f6e44924229c64cf80b - 2011...

REVIEW: 109680
2013-03-28 20:31:07 +01:00
Thomas Lübking 07dfaf3c03 consider shaded windows in checkWorkspaceGeometry
they act pretty much the same as unshaded windows, so i don't know
what prevented their inclusion

BUG: 268660
FIXED-IN: 4.11
REVIEW: 109679
2013-03-28 20:31:07 +01:00
Thomas Lübking 6fb5353cab remove moveResizeMaximized option
REVIEW: 103948
BUG: 91703
BUG: 299245
FIXED-IN: 4.11

- The setting is ignored, the decoration always gets a "true" for it
- moving a maximized window requires breaking a "strong" snap (1/16 of screen height - unless you use quick maximization)
- all snapping is done towards the client, not the frame
- QuickTileMode is exported to the decoration (just as the maximizeMode) so that it can fix the bordersize alongside that.
2013-03-24 22:26:48 +01:00
Martin Gräßlin eba0149e4e Merge branch 'KDE/4.10' 2013-03-22 11:35:57 +01:00
Alexander Mezin ba4ad5c855 Fix unredirected windows not redrawn after display resolution change
REVIEW: 109597
BUG: 305781
FIXED-IN: 4.10.2
2013-03-22 11:34:32 +01:00
Thomas Lübking c1bd7885cb catch maximized windows in ::keepInArea
BUG: 317068
FIXED-IN: 4.10.2
2013-03-20 22:23:41 +01:00
Thomas Lübking c4d450455b catch maximized windows in ::keepInArea
BUG: 317068
FIXED-IN: 4.10.2
2013-03-20 21:11:36 +01:00
Martin Gräßlin 32b6ef42b9 Strip module path from all Qt #include <>
Done with:
fixqt4headers.pl --strip-modules

REVIEW: 109176
2013-03-06 10:26:56 +01:00
Martin Gräßlin b99e1c0a6b Reduce usage of QCursor::pos() and ::setPos()
Where possible it is changed to Cursor::pos(), where we cannot use the
Cursor class (e.g. Aurorae) we can at least try to limit the usage to
prevent roundtrips to the X server.

REVIEW: 109178
2013-02-27 11:46:30 +01:00
Martin Gräßlin be4c76ede1 Port Client::updateCursor to XCB and new Cursor class
The Client::cursor property is changed from QCursor to Qt::CursorShape
and renamed to m_cursor (as all usages are adjusted).

This property is mostly used to define the cursor on e.g. the extended
deco border window. To make this easier a XDefineCursor replacement is
added to xcbutils.h both as a static method and as a member function to
Xcb::Window.
2013-02-25 13:35:15 +01:00
Thomas Lübking 694d1a83b3 Permit maximization of windows with fixed position
A window can be "maximized" despite it's position is fixed.
Most obvioulsy for a corresponding of "0", but also in other
cases. The window can still be resized, some size is the
maximum one and there's no reason to prevent the shortcut of
this state.

BUG: 314392
REVIEW: 108789
FIXED-IN: 4.11
2013-02-18 21:55:14 +01:00
Martin Gräßlin 74097e7d29 Port Client's decoration resize extend input window to XCB
Using Xcb::Window to manage the xcb_window_t and simplify the code - no
longer need to check whether the input_window is valid before calling e.g.
map, as that's handled in Xcb::Window.

One XLib usage for setting cursor is still present. This will be ported
once all the QCursor::handle() get removed.

REVIEW: 108771
2013-02-18 09:44:50 +01:00
Martin Gräßlin a8539ff54e Turn ScreenEdges into a Singleton
In fact it already used to be a Singleton as there is just one object
hold by the Singleton Workspace. So let's make it a proper Singleton
following our kind of standard approach of having a ::create factory
method called from Workspace ctor and a ::self to get to the singleton
instance.
2013-02-07 09:46:52 +01:00
Martin Gräßlin d9aedf620b Rewrite of KWin's Screen Edge Handling
This rewrite is mostly motivated by the need to handle multi screen
setups correctly. That is have edges per screen and not for the combined
geometry. Also porting from XLib to XCB has been a motivation for the
rewrite.

The design of the new ScreenEdge handling is described in the
documentation of ScreenEdges in screenedge.h.

In addition the following changes have been performed:
* move configuration from Options to ScreenEdge
* add screen edge information to Workspace::supportInformation (obviously
  replaces what had been read from Options)
* have Workspace hold a pointer to ScreenEdges instead of an object
* forward declaration of ScreenEdges in workspaces.h, this explains the
  seemingly unrelated changes of just another include in some files

BUG: 290887
FIXED-IN: 4.11
2013-02-07 09:46:52 +01:00
Martin Gräßlin 4c0f9f8bbd Remove interaction of quick tiling with ScreenEdges
Quick tiling/maximizing of Clients is completely independent of the
screen edges functionality. That is it determines the borders itself.
Nevertheless there has been some code still around which interacted with
the screen edges each time a window was moved. This code is completely
useless.
2013-02-07 09:46:51 +01:00
Thomas Lübking 5404c7f9b4 update max. constrains with the aspect setting
complements ff1e4e72efed8ec44abe877ac00bbdede48902d5

REVIEW: 108704
2013-02-05 19:15:40 +01:00
Thomas Lübking 092c80a537 constrain maximization/restorage for fixed ratio
when eg. vertically maximizing a cinemascope video in mplayer
it would horizontally exceed the (16:9) screen, so this
case is translated to a full maximization (effectively binding
the window into screen dimensions)

also, when restoring such video from a horizontal maximization
the restore would usually keep the height (thus breaking the
window aspect) so pass geom_restore -> restore through adjustedSize()

REVIEW: 108702
2013-02-05 19:15:40 +01:00
Martin Gräßlin 334b4bf622 Move handling of Virtual Desktops into a VirtualDesktopManager
The ownership for virtual desktops is moved from Workspace into a new
VirtualDesktopManager. The manager is responsible for providing the count
of virtual desktops and keeping track of the currently used virtual
desktop.

All methods related to moving between desktops are also moved from
Workspace to the new manager, though all methods related to Clients on
Virtual Desktops remain in Workspace for the time being. This is to have
the new manager as independent from KWin core as possible.

An rather important change for the handling of virtual desktops is that
the count and the id of a desktop is now an unsinged integer instead of
an integer. The reason for that is that we cannot have a negative count
of desktops as well as it is not possible to be on a desktop with a
negative identifier.

In that regard it is important to remember that a Client can be on a
desktop with a negative identifier. The special value for a Client being
on all desktops is handled by using -1 as a desktop. For the time being
this is not adjusted but instead of comparing the virtual desktop ids one
should prefer to use the convenient methods like isOnDesktop and
isOnAllDesktops. This would allow in future to internally change the
representation for on all desktops.
2013-01-07 09:47:51 +01:00
Thomas Lübking 6fa52007ee use synthetic configure notifies when needed
the patch omit them while the user just moves around a window
and adds one that got lost with the deferred XMoveResize patch, causing

BUG: 312346
FIXED-IN: 4.10
REVIEW: 108013
2013-01-02 19:05:11 +01:00
Martin Gräßlin 47ddf1384c Fix non-const ref iterator issues reported by Krazy2 checker foreach 2013-01-02 18:35:46 +01:00
Thomas Lübking 683aa55957 use synthetic configure notifies when needed
the patch omit them while the user just moves around a window
and adds one that got lost with the deferred XMoveResize patch, causing

BUG: 312346
FIXED-IN: 4.10
REVIEW: 108013
2013-01-02 18:25:33 +01:00
Martin Gräßlin f689df14d5 Remove Placement wrappers from Workspace
The two methods:
* place
* placeSmart
have only forwarded the call to the Placement object. Now that Placement
is a singleton there is no need to have them. Every user can call them
directly without going over Workspace.
2012-12-20 07:19:53 +01:00
Martin Gräßlin 835648bc20 Move cascadeDesktop and unclutterDesktop to Placement
It is more Placement related and does not really fit into geometry given
that it only calls methods on Placement. It probably only was inside
Workspace due to being part of the DBus interface. The DBus methods are
used by external components so it needs to stay.

The DBus Wrapper is now calling the methods on the singleton Placement
directly, so no need in Workspace anymore.
2012-12-20 07:19:53 +01:00
Martin Gräßlin b28a663f21 Fix C++11 narrowing conversation warning
SVN_SILENT
2012-11-26 11:04:30 +01:00
Thomas Lübking d4f2740ce3 don't leave quick tiling for FS windows
REVIEW: 107317
BUG: 309170
2012-11-14 21:15:48 +01:00
Brian Nguyen a04e9cbc6f Optimize away XMoveWindow() calls in the common click-and-drag case
This implements an optimization similar to one in compiz which defers updating
the backing X window during a window move until the move is terminated. This
helps alleviate some choppiness when using composite + vsync.

REVIEW: 107256
2012-11-10 11:29:49 +01:00
Thomas Lübking cd368384f4 Clock unsynced resizes
For clients w/o XSYNC support, limit resizes to 30Hz
to take pointless load from client and X11

REVIEW: 107087
2012-11-09 00:37:33 +01:00
Fredrik Höglund c679ec6508 kwin: Port most of Workspace::init() to xcb 2012-11-07 22:13:13 +01:00
Thomas Lübking dbf2623e87 respect screen rule in configure requests
REVIEW: 106960
2012-10-25 19:17:22 +02:00
Thomas Lübking 850c1e6f0d add screen rule 2012-09-19 20:21:43 +02:00
Martin Gräßlin 7497ef9148 Make the Compositor a proper Singleton
The Compositor class actually behaves like a Singleton so it should be
one. Therefore four static methods are added:
* self() to access the Singleton
* createCompositor() to be used by Workspace to create the instance
* isCreated() to have a simple check whether the Singleton is already
  created
* compositing() as a shortcut to test whether the compositor has been
  created and is active

The isCreated() check is actually required as especially Clients might
be created and trying to access the Compositor before it is setup.
2012-09-06 09:55:22 +02:00
Martin Gräßlin 62c4d449f5 Use signals'n'slots instead of deep function call into Compositor
For most actions where the compositor needs to perform an action
(e.g. scheduling another repaint) signals were already emitted.
So it's easier to just connect the signals to the Compositor
which in turn makes the code much more readable.

All signals are connected from the Workspace when either the
Compositor gets constructed or a Toplevel gets created.
2012-08-26 20:44:46 +02:00
Arthur Arlt f3739469a2 Move Workspace's compositing functions to own class Compositor
All Workspace functions which were implemented in the file composite.cpp
were moved to an own class Compositor. The header entries were moved as well.
All functions calls are updated.
2012-08-26 20:43:56 +02:00
Thomas Lübking 53534f7966 Merge branch 'KDE/4.9'
Conflicts:
	plasma/generic/applets/batterymonitor/metadata.desktop
	plasma/generic/applets/lock_logout/metadata.desktop
2012-08-11 22:13:59 +02:00
Thomas Lübking b47098dd30 use virtual screen size when desktop is resized
QDesktopWidget::screenGeometry() fails if there's a panning or overlapping screen setup

REVIEW: 105974
BUG: 302783
FIXED-IN: 4.9.1
2012-08-11 21:42:33 +02:00
Thomas Lübking db14a11ffd Merge branch 'KDE/4.9' 2012-07-25 20:30:45 +02:00
Thomas Lübking b0576b1f08 un-Q'tile partially max'd clients on startMoveResize
BUG: 303937
REVIEW: 105699
2012-07-25 20:25:26 +02:00
Martin Gräßlin a394fade64 Remove Tiling support from KWin
As discussed on the mailinglist [1] the tiling support is
removed from KWin. The main reasons for this step are:
* it is unmaintained
* it is a mode not used by any of the core KWin team
* original developer said at Akademy 2012 that he is not
  interested in picking up the work again
* tiling has quite some bugs, e.g. multi screen not supported
* is conflicting with other concepts in KWin, e.g. activities

There is ongoing work to get tiling supported through a KWin
script, which is a preferred way as it does not influence the
existing C++ code base.

[1] http://lists.kde.org/?l=kwin&m=133149673110558&w=2
BUG: 303090
FIXED-IN: 4.10
REVIEW: 105546
2012-07-14 11:18:06 +02:00
Thomas Lübking 4c1c919d78 re-fix bug #283302
broke by accident with 33ffe90128df6ae038b27bd9c9371acacaeee098

BUG: 283302
REVIEW: 105360
FIXED-IN: 4.9rc1
2012-06-25 21:57:19 +02:00
Thomas Lübking f9d681a3ba fix window postition on varying screen struts better
BUG: 301805
CCBUG: 274466
FIXED-IN: 4.9
2012-06-18 22:10:57 +02:00
Thomas Lübking 5ae8b7efe6 only conditionally break partial maximization on resizes and (by this) only partially adjust the restore size
BUG: 299647
FIXED-IN: 4.9
REVIEW: 104899
2012-06-01 16:46:49 +02:00
Thomas Lübking 4f458d2fe9 fix preproc branching (lacked checkWorkspacePosition) 2012-06-01 16:46:49 +02:00
Thomas Lübking 4643b59b0f updateFocusMousePosition when exiting fullscreen mode
REVIEW: 104985
BUG: 300245
FIXED-IN: 4.9
2012-05-18 19:07:28 +02:00
Thomas Lübking 3a6095726e Only reserve required electric borders for ElectricAlways
CCBUG: 293011
REVIEW: 104073
2012-05-03 19:48:20 +02:00
Thomas Lübking 766bc27940 tag window being moved before dropping out of QuickTile/Max and omit wobble if window being moved during maximization change
BUG: 222102
REVIEW: 104841
FIXED-IN: 4.9
2012-05-03 18:54:30 +02:00
Thomas Lübking d6209471e8 sync maximization and quick tiling state in tabs
BUG: 296097
REVIEW: 104293
FIXED-IN: 4.9
2012-04-30 22:37:40 +02:00
Thomas Lübking 49fff98f04 sanitize geom_restore if the window gets quickly untiled after initially being maximized
BUG: 298646
REVIEW: 104715
FIXED-IN: 4.9
2012-04-30 22:37:40 +02:00
Thomas Lübking ae769906de fix quick unmaximization position
CCBUG: 298646
REVIEW: 104702
2012-04-24 20:40:53 +02:00
Thomas Lübking 93729709e6 merge geom_pretile & geom_restore
remove some patch bodies
checkWorkspacePosition on geom_restore

CCBUG: 80265
reviewed-by: graesslin
2012-04-20 23:59:25 +02:00
Martin Gräßlin f0c6f06241 Stacking Order becomes a list of Toplevel Windows
The common usage of stacking order is to loop through
the list and find a specific Client. All these usages
still need to find a Client. For that the loops are
adjusted to first cast the Toplevel into a Client and
continue if the current item is no Client.

At the moment all entries in the stacking order should
still be Clients as the Deleted are not yet added.
2012-04-20 08:36:24 +02:00
Thomas Lübking 1d00436ea4 fix off-by-one on checkUnrestrictedMoveResize
BUG:  210926
FIXED-IN: 4.9
REVIEW: 104632
2012-04-17 21:10:19 +02:00
Martin Gräßlin 84a6891d79 Add notifications for Window goes to/fro Fullscreen
FEATURE: 124612
FIXED-IN: 4.9.0
REVIEW: 104457
2012-04-07 11:10:19 +02:00
Martin Gräßlin 27643f5a9e Drop kephal dependency from KWin
Kephal has turned into not being more than a wrapper around
QDesktopWidget and does not even provide syntax sugar.

REVIEW: 104427
2012-04-01 08:11:57 +02:00
Thomas Lübking 7b3ee21cd3 [Janitorial] Remove unused function
resetMaximize is done in changeMaximize since ages
2012-03-22 19:35:48 +01:00