Commit Graph

472 Commits (c455087248b990d7c95575e8514d640a9694dae5)

Author SHA1 Message Date
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
Thomas Lübking e8bc821848 fake a move event when dropping out of quick tiling
BUG: 228815
REVIEW: 104347
2012-03-21 22:32:33 +01:00
Thomas Lübking 1070bf895b split decorationRect / visibleRect usage
REVIEW: 104215

cherry-picked from 0f3380f3b10e57416f81a1288dc10b8dfe11d87e
Conflicts:

	kwin/geometry.cpp
	kwin/scene.cpp
2012-03-21 00:36:50 +01:00
Thomas Lübking 218baa9dbe swap strictGeometry for isFullScreen case in sizeForClientSize
ratio:
it's the same preference in isFullScreenable, allows clients which do not withdraw their
restrictions (like aspect etc.) or get fullscreen artificially (like through kstart) to start in
"real" fullscreen mode.

BUG: 146741
REVIEW: 104331
2012-03-18 22:23:27 +01:00
Thomas Lübking bd99dccc2b Sanitize position on screen changes with different struts
BUG: 274466
REVIEW: 104233
2012-03-14 02:29:56 +01:00
Thomas Lübking b0f5e4ac29 remove overzealous maxmode_restore
there's no point in changing the behavior of the maximize button

BUG: 195576
2012-03-14 02:29:56 +01:00
Thomas Lübking 03e18bc88b Merge branch 'KDE/4.8' 2012-03-14 00:18:11 +01:00
Thomas Lübking d791b6e421 fix restore size for shaded windows
BUG: 243423
REVIEW: 104236
2012-03-13 21:38:55 +01:00
Thomas Lübking 0aefd56e0f store restore size /before/ removing the decoration for BorderlessMaximized (lead to window resizes on unmaximization)
BUG: 295449
REVIEW: 104185
2012-03-13 21:38:54 +01:00
Martin Gräßlin 212908ee88 Refactoring of KWin::Options: getter methods instead of public variables 2012-02-27 19:31:58 +01:00
Martin Gräßlin 7f0770f99d Properly ifdef everything requiering HAVE_XSYNC
REVIEW: 104080
2012-02-26 17:22:38 +01:00
Thomas Lübking b79a176be3 resolve merge conflicts 2012-02-21 19:22:08 +01:00
Thomas Lübking 631fb0d4cb allow app_noborder clients to drop out of maximization
REVIEW: 104010
CCBUG: 294211
2012-02-21 17:18:05 +01:00
Philipp Knechtges 239d5757f2 kwin: move/resize events shall not force a repaint of all layers
This patch adds a new function Toplevel::addLayerRepaint, that in contrast
to addWorkspaceRepaint does not invalidate every blur texture cache that
overlaps with that region. As the name suggests it rather invalidates the
to the window associated layer at that position. This is especially useful
in the case of move/resize events in combination with oxygen-transparent,
where the altered window is almost always the topmost window and the blur
texture cache of the windows underneath are unchanged.

For the case of fully opaque windows the behaviour of addLayerRepaint
and addWorkspaceRepaint should be same.

REVIEW: 103906
2012-02-12 16:57:12 +01:00
Thomas Lübking 85635dd485 fix tabbing
BUG: 290959
BUG: 265160
BUG: 229292
BUG: 238279
BUG: 290758
BUG: 222831
BUG: 278275
BUG: 245747
BUG: 230000

BUG: 253697
BUG: 230570
BUG: 265977
BUG: 225337
BUG: 225339

REVIEW: 103855
2012-02-11 16:30:22 +01:00
Thomas Lübking bf88ec09ac Revert "fix tabbing"
pushed out of branch, not master - leading to absent revision, found hash collision??

This reverts commit 94b2ad7b85801e37e2df4671cdc4f26b6d7e5506.
2012-02-11 16:29:14 +01:00
Thomas Lübking d245035a17 fix tabbing
BUG: 290959
BUG: 265160
BUG: 229292
BUG: 238279
BUG: 290758
BUG: 222831
BUG: 278275
BUG: 245747
BUG: 230000

BUG: 253697
BUG: 230570
BUG: 265977
BUG: 225337
BUG: 225339

REVIEW: 103855
2012-02-11 16:01:41 +01:00
Thomas Lübking 033ae96f89 selective rule remembering
REVIEW: 103875
2012-02-09 17:34:08 +01:00
Martin Gräßlin 7c6155a865 Drop xinerama related options
Behavior is now like all xinerama related options are enabled.
There seems to be no valid reasons to run multi screen without
xinerama support and even if a user would wish to do so she can
just disable xinerama in xorg.conf.

Furhtermore thanks to KWin scripting it is possible to achieve the
behavior as it used to be with the options disabled. E.g. it is
possible to span a window in fullscreen mode over all screens.

This change is in accordance to the discussion on kwin and plasma
mailinglists:
http://mail.kde.org/pipermail/plasma-devel/2012-January/018542.html
2012-02-09 16:52:39 +01:00
Thomas Lübking d845b60c6c change geometry w/o compositor restart
This possibly fails on some (older?) ati chip/driver combos
-> Waiting for bugreports

REVIEW: 103246
2012-01-24 22:27:15 +01:00
Martin Gräßlin 507ff411d6 Drop the WorkspaceProxy in Scripting
Unlike stated at several places in the code it is not difficult to
setup the connections to all Clients.

It would have been nice if the failed attempts to connect the Clients
would not have made it into the code as emitted signals which are
nowhere used. Not to mention that like in all places the signals to
inform that a state changed were emitted before the state changed was
performed.
2012-01-21 10:51:22 +01:00
Martin Gräßlin 49b24e4940 Clean-up Scripting Wrapper for Workspace
No need to manually convert everything to script values.
2012-01-21 10:04:47 +01:00
Thomas Lübking 7d3f668790 Withdraw partial maximization state when resizing partially maximized client but moveResizeMaximizedWindows() isn't true
REVIEW: 103683
BUG: 290990
FIXED-IN: 4.8
2012-01-13 16:42:39 +01:00
Thomas Lübking d57a0a05ab Withdraw partial maximization state when resizing partially maximized client but moveResizeMaximizedWindows() isn't true
REVIEW: 103683
BUG: 290990
FIXED-IN: 4.8
2012-01-13 15:57:34 +01:00
Martin Gräßlin 445687ed2b The geometry property starts to work
The signal is still emitted too often, but it works.
2011-12-31 08:58:43 +01:00
Martin Gräßlin 7061ab7d24 Remove unused scripting signal 2011-12-31 08:58:41 +01:00
Martin Gräßlin 7678667b5a FullScreen Property
Setter and notify signal.
2011-12-31 08:58:40 +01:00
Thomas Lübking b7d1dbeb86 Honor rules in general isMaximizable/Minimizable/Shadeable queries
REVIEW: 103379
2011-12-10 21:27:11 +01:00
Martin Gräßlin 6c62fcd400 Make use of resize effect when resizing windows
Fixes a regression. When resize effect is available we can do a
fast resizing by only perform the resizing after the user ended
resizing the window.

REVIEW: 103363
2011-12-09 20:48:46 +01:00
Thomas Lübking a3e268e737 checkWorspacePosition on screen changes only
REVIEW: 103029
BUG: 283302
2011-11-12 19:29:17 +01:00
Fredrik Höglund 9fa2feabc8 kwin: Insert an input-only window above each decorated client
This input-only window is used to capture events above the
client window and preventing them from reaching the client.

It is currently used to enlarge the borders by an invisible
amount, using the ExtendedBorderRegion provided by the
decoration.
2011-11-11 03:02:10 +01:00
Thomas Lübking d3331eed9c export the baseincrement size to the effectwindow and utilize it in the windowgeometry effect
BUG: 283518
REVIEW: 103033
FIXED-IN: 4.8
2011-11-03 21:49:20 +01:00
Luboš Luňák 1030bcd7f3 keep windows inside workarea if they were there before workarea changes 2011-09-30 17:10:57 +02:00
Luboš Luňák 40744b6b11 use old screen sizes when calculating old window positions on screen size changes 2011-09-30 17:10:57 +02:00
Luboš Luňák 3bd58d49fa so much for copy&pasting a function name 2011-09-29 18:30:20 +02:00
Luboš Luňák 191b03be1b gee, is this come-up-with-the-most-useless-variable-name competition or what?
And they are both pointless anyway, simplify code.
2011-09-29 18:30:20 +02:00
Luboš Luňák 07e3dff871 make checkWorkspacePosition() work also on desktop/screen change
It previously worked only when struts changed, this makes it work
e.g. when moving a window between desktops that have different
struts, or when sending a windows between differently sized screens.
2011-09-29 18:30:20 +02:00
Luboš Luňák 8edf542bb7 remove a function that should have been removed in d105478abf33474fa18e6bb1e80d09a1911f42e4 2011-09-29 18:30:20 +02:00
Luboš Luňák c47de96716 fix overzealous optimizations leading to dangling references to temporaries 2011-09-29 18:30:20 +02:00
Luboš Luňák ede01e1702 the Qt idiom is that out parameters are pointers 2011-09-29 16:22:24 +02:00
Thomas Lübking dd05eebbe2 catch changeMaximize recursion from setNoBorder
polluted the restore geometry for unmaximizing from quick maximization when using BorderlessMax'd

CCBUG: 279529
(cherry picked from commit 5ca44bfd7dce34504ff5fdc25818470bc672e358)
2011-09-09 18:24:05 +02:00
Thomas Lübking 12b9b1c79e fix xsync protocol
BUG: 160393
REVIEW: 102311
2011-08-24 01:39:34 +02:00
Thomas Lübking 123e259441 check workspace position after screen change of any max'd client
also only unset max'd state when resizing, but not when moving a max'd client
BUG: 279051
CCBUG: 279529
REVIEW: 102414
(cherry picked from commit ea91e9dea63cf58fcf0d45d7e2f4783d0b70b8bb)

Conflicts:

	kwin/geometry.cpp
2011-08-23 23:11:59 +02:00
Thomas Lübking 6f6f13f881 fix movable maximized behaviour, allow maximizing clients with limited max size
BUG: 279529
REVIEW: 102237
(cherry picked from commit 3700951ab33933c707da2e50b0561bf3ee9812c4)
2011-08-15 22:16:44 +02:00
Matthias Fuchs 7d67380205 Fixes disabling fullscreen for windows using two displays.
Dragging a fullscreen window to another screen and then disabling
fullscreen keeps the window at the new screen.

BUG:261704
FIXED-IN:4.7.1
REVIEW:102103
(cherry picked from commit d35ec6d18377fd872207b88dd39f560a483bcc14)
2011-08-15 19:13:49 +02:00
Thomas Lübking 8b75f4b321 QRect::right() + 1 == QRect::x() + QRect::width()
Also to catch inner split for sure the calculation needs to be accurate.

BUG: 279774
REVIEW: 102292
(cherry picked from commit 561dac0ae1bd158563e4aa6d0f25268fbc5a97af)
2011-08-11 14:32:27 +02:00
Martin Gräßlin f72f465c13 Fix Typos
Krazy--
SVN_SILENT
2011-08-03 08:25:10 +02:00
Alex Fiestas 78783bfb49 use checkOffscreenClient for half-maximized clients 2011-07-28 22:19:39 +02:00
Alex Fiestas c0b89870b9 Move the "noOffscreensWindow" into a method so we can reuse it 2011-07-28 22:19:38 +02:00
Arthur Arlt e79cf50087 Rename some functions and variables in class Tiling
Some functions and variables were given more proper names and are now
following the naming scheme. 'Redundant' naming information was also removed.

REVIEW: 102020
2011-07-28 13:55:30 +02:00
Arthur Arlt 1326316049 Introduce Build Option for Tiling
A build option is introduced to file CMakeLists.txt. Classes Tiling,
Tile and TilingLayouts are only built if the option is set to ON. #ifdef's
are added to the classes where functions of the excluded classes are called.
2011-07-28 13:39:21 +02:00
Arthur Arlt 3634525613 Refactoring Tiling
This initial commit introduces a new class Tiling. It is provided by
the files tiling/tiling.h and tiling/tiling.cpp. It covers all the
Tiling functionality which was provided by Workspace. In this initial
commit, all the functions were just moved and adjusted.
A  new member variable m_tiling is introduced to Workspace, which
makes the new class Tiling accessible from Workspace.
The Tiling pointer is created in the constructor and deleted in
the deconstructor. Also a getter method tiling() is provided.
All calls from other classes are updated to use the methods in class
Tiling now.
2011-07-28 12:35:51 +02:00
Alex Fiestas a2aad27a78 Make sure that not maximized clients are offscreen on xrandr events
Added a small check in Client::checkWorkspacePosition which will assure
us that no window ("client") is left in a offscreen position. this is
more a workaround than a proper fix but is the only thing we can do that
will be backportable to the 4.7 branch.
2011-07-27 20:13:54 +02:00
Martin Gräßlin 32a82141f0 Adding a build option for KWin Scripting
It is possible that adding this build option broke the Scripting
component. This is something that should not happen. Unfortunately
by just ifdefing everything scripting related with scripting enabled
we have build errors. These are caused by the fact that the scripting
code includes e.g. client.h through "./../client.h". At one offending
place I changed that to "client.h", but there is also a client.h in
the scripting directory.

The includes and naming of the scripting files clearly have to be fixed!
2011-07-10 10:48:25 +02:00
Thomas Lübking 05cbf3f1ca correct workspace position in case of quicktiling or touching the border when the decoration padding changes 2011-07-10 02:24:54 +02:00
Martin Gräßlin 039c025bfb Add a build option for screen edge support 2011-07-07 18:29:11 +02:00
Arthur Arlt b63c9c1af8 Make mothod windowGeometryShapeChanged() a slot
The method windowGeometryShapeChanged() from the class Scene is now a slot. It is now connected to the signal geometryShapeChanged() which is sent from Toplevel instances Client and Unmanaged.
All direct method calls were deleted.
2011-07-05 11:34:12 +02:00
Arthur Arlt c8cf1e4c7e Removed method destroy()
Since the method destroy() was called only from one location in the code
followed by update(), the funtionality has been moved to the method update()
which now takes an boolean argument 'force'. This argument is false by default
and set to true only at that location where destroy() was called formerly.
2011-07-04 13:24:51 +02:00
Arthur Arlt 6e7a249cd0 Rename functions in class ScreenEdge
Since the functions were moved from Workspace to its own class ScreenEdge
and the functionality was formerly called ElectricWindows, the functions still
had the old names. They are now consistenly renamed without redundand naming.
The function calls were updated as well in all classes where ScreenEdge is used.
2011-07-04 13:24:51 +02:00
Arthur Arlt 2f11337d98 Refactoring Screen Edge handling
This commit change the screen edge function calls to be called in the
new class ScreenEdge. The old methods are still in Workspace and will
be removed in a further commit.
2011-07-04 13:24:51 +02:00
Arthur Arlt 25654f25b8 Removing TopMenu
Since the funtionality of TopMenu did no longer work in KDE4 this feature was
removed from Workspace. Every reference to it was removed as well as commentaries
and documentation.

REVIEW: 101485
2011-06-24 12:27:56 +02:00
Martin Gräßlin 12d3b354fc Remove drawbound move/resize functionality
Drawbound was nowadays only used when compositing is disabled.
For the composited case, the drawbound was replaced by the resize
effect and in fact we should always just use the resize effect.

REVIEW: 101411
2011-06-23 12:15:54 +02:00
Thomas Lübking 9397b14e81 kwin, add debug statements to configureReqest 2011-06-13 19:33:40 +02:00
Alberto Mattea 9bbed0335a Add basic multihead support to kwin
For now there is autostart support on all screens and support for different resolutions on different screens.
Keyboard shortcuts are still TODO
REVIEW: 101125
BUG: 256242
2011-05-08 20:39:27 +02:00
Martin Gräßlin ff3900d825 Refactor KWin Outline code into an own class
This change unduplicates some code and merges it into one class
allowing us to use an replacement effect for the outline in
future.
CCMAIL: a.arlt@stud.uni-heidelberg.de
REVIEW: 100848
2011-04-28 11:19:05 +02:00
Martin Gräßlin b52975a57e Merge branch 'libkwineffects'
The branch contains the first step in reworking the kwineffects
library. This includes:
* replacing virtuals by signals and slots
* dropping some unused methods
* remove KWin::TimeLine

More to come.

Conflicts:
	kwin/workspace.cpp
2011-03-16 19:46:59 +01:00
Martin Gräßlin 32c903b05b Rework signals for move/resize windows
First a signal is emitted when the user starts a move/resize operation.
During the move/resize operation each geometry change emits an update signal.
Last but not least a finish signal is emitted.

This eliminates the specific method for geometry updates in drawbound resize
mode.
2011-03-13 12:41:30 +01:00
Martin Gräßlin 911098ee76 WindowGeometryShapeChanged becomes a signal 2011-03-12 12:34:59 +01:00
Thomas Lübking b42ae48280 store geom_pretile on maximization as well 2011-03-08 23:13:25 +01:00
Thomas Lübking 0b1599680d stage one, call martin 2011-03-08 22:05:09 +01:00
Thomas Lübking dd19f5e1a7 Unlink maximization state from actual geometry
Since clients with restricted geometry now cannot cover the entire screen by default it was necessary to unlink the state from the actual geometry to re-provide the "restore" feature.
The patch also extends the protection of the maximized state to unilateral maximizations (emacs issue)

BUG: 265568
BUG: 252314
CCBUG: 252255
review request https://git.reviewboard.kde.org/r/100606/
2011-03-08 21:48:08 +01:00
Martin Gräßlin eeb10c69d5 Signal for windowUserMovedResize
In core a new signal is added for maximizedState change of client.
Other function calls remain as direct calls for the moment.
2011-02-28 21:03:13 +01:00
Martin Gräßlin 0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Thomas Lübking 677f6953c2 remove qdebug leftover
svn path=/trunk/KDE/kdebase/workspace/; revision=1212027
2011-01-05 14:47:25 +00:00
Thomas Lübking 9835858a4c logic error. re-allow plain moves, sorry :-\
BUG: 260847

svn path=/trunk/KDE/kdebase/workspace/; revision=1208406
2010-12-21 14:34:45 +00:00
Thomas Lübking 94605a5ef5 adjust strict geometry policies
http://svn.reviewboard.kde.org/r/5871/
BUG: 158974
CCBUG: 252314

@Jorge:
please see the request description and check whether this allows you to fix your bug
in case, don't forget to close it ;-)

svn path=/trunk/KDE/kdebase/workspace/; revision=1208120
2010-12-20 18:18:27 +00:00
Thomas Lübking 68fbd31ad8 add windowgeometry tip effect, bind it to the general setting and generalize effect feature provide api, thus update resize effect
BUG: 219755

svn path=/trunk/KDE/kdebase/workspace/; revision=1195300
2010-11-10 19:21:56 +00:00
Thomas Lübking 773fec4e23 workaround bug 224600 / active but unrisen windows don't go fullscreen
NOTICE that the correct solution would be to move any active FS client on top of the stack in layers.cpp but this might raise other issues.
this patch preserves the present behaviour but raises windows before setting the fullscreen. the only "issue" with this is that for setups that do not raise windows when activating them, setting an active but not risen client FS will cause a restack as sideeffect

BUG: 224600

svn path=/trunk/KDE/kdebase/workspace/; revision=1194908
2010-11-10 03:08:37 +00:00
Martin Gräßlin 0174887114 Extend quick tiling to quarter of screen.
When moving a window to the upper or lower quarter of a screen edge the window will be quick tiled to the responsible quarter of the screen.
Moving the window to the middle half of the screen will do the normal quicktiling to half of screen, quick maximization at top screen is unchanged.
Thanks to Arthur Arlt for his first code contribution to KDE.
See Review Request http://reviewboard.kde.org/r/5661
CCMAIL: arre2000@gmx.de

svn path=/trunk/KDE/kdebase/workspace/; revision=1190361
2010-10-27 13:16:36 +00:00
Rohan Ramdas Prabhu 2aec750ebf Trembles the weave as the clock ticks, attain another microstate.
Every disorder causes every duration, which ensures the one that stays.
reality is relative. natural is disorder.
[R]obinhood[P]andey

Merging scripting from
^/branches/work/kwin_scripting TO
^/trunk

svn path=/trunk/KDE/kdebase/workspace/; revision=1177865
2010-09-21 14:31:40 +00:00
Thomas Lübking c62cbd5911 fix pending XSYNC requests, bugs partially closed due to suggested relation by the reporters
please re-open them if this does not fix it

BUG: 178269
BUG: 183263
BUG: 241094
BUG: 243094

svn path=/trunk/KDE/kdebase/workspace/; revision=1175748
2010-09-15 19:33:15 +00:00
Luboš Luňák 87d373e9cd off-by-one error when ensuring a window in the bottom-right corner
doesn't go outside the workarea


svn path=/trunk/KDE/kdebase/workspace/; revision=1165452
2010-08-19 12:08:33 +00:00
Martin Gräßlin ad3753c944 Let's use KGlobalSettings' drag and drop pixel distance instead of a hardcoded value when starting to move a window.
svn path=/trunk/KDE/kdebase/workspace/; revision=1134234
2010-06-03 18:04:36 +00:00
Martin Gräßlin 02c8c78c21 Use start drag time for dragging and not double click interval.
svn path=/trunk/KDE/kdebase/workspace/; revision=1134134
2010-06-03 13:48:14 +00:00
Rohan Ramdas Prabhu 92460322ab Fixed a bug for KWin reported on http://bugs.kde.org with the bug no.
226423

BUG: 226423
CCMAIL: l.lunak@kde.org


svn path=/trunk/KDE/kdebase/workspace/; revision=1130648
2010-05-25 21:40:14 +00:00
Nikhil Marathe 2163f87264 Modified workspace method names to mark them up as referring to tiling
svn path=/trunk/KDE/kdebase/workspace/; revision=1125434
2010-05-11 11:10:53 +00:00
Thomas Lübking ffa8b5306c rename EffectsHandler::provideResizeEffect to singular, honor rules (also affecting the sync timer now)
svn path=/trunk/KDE/kdebase/workspace/; revision=1123660
2010-05-06 14:54:34 +00:00
Nikhil Marathe a2a7891789 SVN_SILENT Renamed tilingMode to tilingEnabled to better convey its boolean-ness
svn path=/trunk/KDE/kdebase/workspace/; revision=1123140
2010-05-05 12:09:49 +00:00
Martin Gräßlin f6ebb5d913 Texture scaling in resize effect and disabling the drawbound when the effect is present.
This provides a good resizing performance for users having problems with the live-updating resize.
Patch by Thomas Lübking.

svn path=/trunk/KDE/kdebase/workspace/; revision=1118714
2010-04-25 18:40:04 +00:00
Nikhil Marathe 5fc7e93d69 Tiling is here!
This commit merges the kwin-tiling branch. Ideally it shouldn't break anything and add a few features ;-)
It was applied as a patch. Do not attempt to merge the branch directly, it has a few issues.
This feature is currently experimental, although it hasn't crashed in quite a long time. It lacks some features and probably leaks some memory. Fixes will be on the way.

Season Of KDE 2009 project by Nikhil Marathe

svn path=/trunk/KDE/kdebase/workspace/; revision=1118677
2010-04-25 16:43:14 +00:00
Hugo Pereira Da Costa 4874785fb4 revert r1078325 and moves the handling of Maximize state changes when
un-grouping windows to clientgroup.cpp. Ensures that Client::maximize( 
MaximizeRestore ) is called when appropriate to avoid decoration artifacts.
BUG: 223060

svn path=/trunk/KDE/kdebase/workspace/; revision=1078877
2010-01-23 03:41:39 +00:00
Hugo Pereira Da Costa 346bcc30d3 Force update of decoration pixmap in setGeometry when maximize state is changed even if the size is
not, to handle changes in decoration pixelMetrics right.
BUG: 223060

svn path=/trunk/KDE/kdebase/workspace/; revision=1078325
2010-01-22 02:50:33 +00:00
Hugo Pereira Da Costa f13d25a8df Fixed calculation on drag distance in Client::handleMoveResize to properly handle decoration padding, consistently with calculation of
"moveOffset" in Client::processDecorationButtonPress (in events.cpp).

BUG: 223366


svn path=/trunk/KDE/kdebase/workspace/; revision=1078291
2010-01-21 23:09:07 +00:00
Lucas Murray 41e5bfd793 Change how quick tiling and maximization is activated slightly. Instead
of using electric borders just check the location of the cursor; if the
cursor is near the edge enable the resize snap. This makes the features
easier to activate, removes the conflict with desktop switching and
allows the features to be used completely on multi-screen systems.
Patch inspired by one from Marcel Schaal.
BUG: 218957

svn path=/trunk/KDE/kdebase/workspace/; revision=1071996
2010-01-09 09:49:52 +00:00
André Wöbbeking ab85881232 error: ISO C++ forbids variable length array
use QVarLengthArray instead

svn path=/trunk/KDE/kdebase/workspace/; revision=1069536
2010-01-03 17:26:27 +00:00
Lucas Murray 187d26a641 If both quick maximization and "allow moving and resizing of maximized
windows" are enabled then don't instantly restore maximized windows when
they are dragged.
BUG: 219952

svn path=/trunk/KDE/kdebase/workspace/; revision=1065887
2009-12-24 16:30:07 +00:00
Lucas Murray ae3ef3f765 Allow the quick tiling keyboard shortcuts to move the window between
Xinerama screens.

svn path=/trunk/KDE/kdebase/workspace/; revision=1065319
2009-12-23 01:36:44 +00:00
Thomas Lübking d92c427d36 avoid "deep" QVector copy
CCBUG: 217040

svn path=/trunk/KDE/kdebase/workspace/; revision=1064056
2009-12-20 01:49:39 +00:00
Lucas Murray efb6055fc0 Fix window snapping.
svn path=/trunk/KDE/kdebase/workspace/; revision=1049888
2009-11-16 02:42:12 +00:00
Lucas Murray e0bee92151 Update the window group's min/max size when the hint on any window in
the group changes.
BUG: 214673

svn path=/trunk/KDE/kdebase/workspace/; revision=1049636
2009-11-15 15:48:59 +00:00
Lucas Murray 5e93336473 Resize other windows in the group when a grouped window is resized by
the application.
CCBUG: 214673

svn path=/trunk/KDE/kdebase/workspace/; revision=1049618
2009-11-15 15:08:15 +00:00
Lucas Murray a0d07d12a2 Merged r970865:1049322 from /branches/work/kwin-tabbing
Adds window tabbing support to KWin.
FEATURE: 42023

svn path=/trunk/KDE/kdebase/workspace/; revision=1049334
2009-11-15 03:24:04 +00:00
Martin Gräßlin 77f0f0eaca Adding the missing pieces for a nice and fast letterbox resizing as a replacement for the drawbound resizing.
Perhaps we should not display the totally ugly drawbound when we have an active resize effect.
CCBUG: 208770
CCBUG: 152638

svn path=/trunk/KDE/kdebase/workspace/; revision=1042711
2009-10-30 14:22:33 +00:00
Lucas Murray 8a8428e41c Less Krazy warnings please.
svn path=/trunk/KDE/kdebase/workspace/; revision=1042572
2009-10-30 06:51:59 +00:00
Marco Martin 36b39da955 respect the no border hint for windows that aren't maximized in case of
borderlessMaximizedWindows()

svn path=/trunk/KDE/kdebase/workspace/; revision=1035170
2009-10-14 13:07:31 +00:00
Lucas Murray 65e8bea70d Make quick maximization and tiling more intuitive by handling resize and
move operations in a logical fashion when a window is in the maximized
or tiled state.

svn path=/trunk/KDE/kdebase/workspace/; revision=1035021
2009-10-14 09:33:00 +00:00
Lucas Murray e5d176b90b Fix quick tiling/maximize so other screen edge actions assigned to the
same edges work again.

svn path=/trunk/KDE/kdebase/workspace/; revision=1031990
2009-10-06 15:52:08 +00:00
Lucas Murray d171c594ff Cancel a quick tile/maximize action if the user moves the window back
away from the edge of the screen without releasing the mouse button.

svn path=/trunk/KDE/kdebase/workspace/; revision=1031967
2009-10-06 14:56:10 +00:00
Lucas Murray 20f1a79d04 Less warnings please.
svn path=/trunk/KDE/kdebase/workspace/; revision=1031490
2009-10-05 09:47:13 +00:00
Lucas Murray ca9df8caae Add window snapping to the desktop grid effect.
Patch by Caio Marcelo de Oliveira Filho.
FEATURE: 188743

svn path=/trunk/KDE/kdebase/workspace/; revision=1031428
2009-10-05 04:06:20 +00:00
Lucas Murray 52653a13b4 Don't send sync requests when using the rubber band for window resizing.
BUG: 181800
CCBUG: 183263

svn path=/trunk/KDE/kdebase/workspace/; revision=1030921
2009-10-03 14:07:49 +00:00
Lucas Murray 39a68673a4 Use correct fullscreen geometry when moving fullscreen windows across
Xinerama screens.
BUG: 188827

svn path=/trunk/KDE/kdebase/workspace/; revision=1030845
2009-10-03 10:00:31 +00:00
Lucas Murray b4938657b8 Prevent KWin from sending out multiple sync requests before the client
has time to reply.
BUG: 183263

svn path=/trunk/KDE/kdebase/workspace/; revision=1030473
2009-10-02 10:50:13 +00:00
Marco Martin 154b0296a2 add a new (hidden for now) option: hide (and delete) the window borders
when the window is maximized, restoring them wen it's unmaximized. will
be used for small screen setups


svn path=/trunk/KDE/kdebase/workspace/; revision=1025694
2009-09-19 12:48:28 +00:00
Lucas Murray b21b7cbb98 Fix quick tiling and maximization on multi-screen systems.
svn path=/trunk/KDE/kdebase/workspace/; revision=1024688
2009-09-17 08:11:01 +00:00
Robin Harold Burchell 102ec081e2 Extend on the quicktiling(/snap) work by mgraesslin in r1021305:
- Add hotkeys for snap left/snap right, kwin won't need a seperate hotkey for snap up, as maximize will do that job for us, and it already has a hotkey
 - Add geometry restoring to quick tile, meaning that windows can be moved back to their original state after a tile, useful if just looking at something quickly.

Thanks to mgraesslin for review and lots of mentoring.

svn path=/trunk/KDE/kdebase/workspace/; revision=1022987
2009-09-13 17:09:44 +00:00
Martin Gräßlin 9e3484e2f0 Adding new option to disable the legacy fullscreen mode (borderless, not netwm compliant windows with screen geometry).
It is disabled by default, but if it causes problems we will enable it again. In that case the "3rd party" (netbook shell) should set the option.
BUG: 206789
CC-MAIL: notmart@gmail.com

svn path=/trunk/KDE/kdebase/workspace/; revision=1021309
2009-09-08 20:19:20 +00:00
Martin Gräßlin 754f5d0829 Quick maximize and tiling when moving a window to the left/right or top screen edge.
Top screen edge (un)maximizes. Left screen edge sets window to left half of screen geometry, right edge to other half.

svn path=/trunk/KDE/kdebase/workspace/; revision=1021305
2009-09-08 20:01:08 +00:00
Lucas Murray 9842c3247e Obey window size hints when doing unrestricted resizes.
BUG: 196326

svn path=/trunk/KDE/kdebase/workspace/; revision=987516
2009-06-26 09:06:48 +00:00
Fredrik Höglund a088f660a5 Make sure that the repainted area includes the whole decoration when
a window is moved or resized.

svn path=/trunk/KDE/kdebase/workspace/; revision=963609
2009-05-04 23:19:42 +00:00
Martin Gräßlin 91f0305942 Use foreach loop instead of iterator based for loop when walking through stacking_order in cascade desktop. It seems that stacking order is changed which is causing a crash with the iterator based version.
BUG: 190903

svn path=/trunk/KDE/kdebase/workspace/; revision=960527
2009-04-28 15:26:02 +00:00
Lucas Murray c21bed5890 Allow moving and resizing above the top of the screen again when doing
an unrestricted move or resize.

svn path=/trunk/KDE/kdebase/workspace/; revision=940697
2009-03-18 02:34:07 +00:00
Toby Dickenson 0c166b6ecb call the windowUserMovedResized hook for maximize/restore. That method has two boolean parameters which indicate whether this is the first move in a sequence, and the last. For maximize/restore we set both to true, and several effects need tweaking to handle this case. Also include an addition to the wobbly windows effect to include a slight 'throb' when maximized/restored. This makes it easier for your eye to track where your de-maxized window went to. FEATURE 185014
svn path=/trunk/KDE/kdebase/workspace/; revision=934346
2009-03-02 20:18:35 +00:00
Lucas Murray 21f023ee77 Revert r925355, r925357 and r925358 as the crashing was caused by
Kephal and has since been fixed.

svn path=/trunk/KDE/kdebase/workspace/; revision=927675
2009-02-18 04:05:37 +00:00
Lucas Murray ca901dae30 Improved window movement around struts. Windows can be moved anywhere
where the titlebar is still clickable even if it is outside the normal
work area. When struts are added or removed only move the windows that
cover the same area, leave all others untouched. If a strut is removed
on a xinerama screen that is not on the edge of the full desktop area
prevent the windows from being moved offscreen. Prevent struts/panels
from interfering with the movement of windows on other xinerama screens.
BUG: 74559
BUG: 90833
BUG: 160068

svn path=/trunk/KDE/kdebase/workspace/; revision=927466
2009-02-17 15:50:00 +00:00
Lucas Murray 0d6f29c18d Ignore struts half-way up the screen when calculating the available work
area. Fixes placement and resizing of windows on the larger monitor of a
xinerama setup where each monitor has a different resolution.
BUG: 184348

svn path=/trunk/KDE/kdebase/workspace/; revision=926545
2009-02-15 16:37:42 +00:00