Commit graph

973 commits

Author SHA1 Message Date
Martin Gräßlin
818714432f Move Scripting from main to Workspace
Scripting can be started after everything else is started, there
is no reason to have it in main.cpp.
2012-04-22 22:28:56 +02:00
Martin Gräßlin
563dc7fb8e Do not create Deleted on Workspace Shutdown
When the Workspace is shutting down the compositor is torn down
before Clients and Unmanaged are released. This means that there
is no need to create the Deleted windows.

Furthermore creating the Deleted manipulates the stacking_order
while Workspace dtor loops over this list to release all clients.
This may cause crashes.

BUG: 282933
FIXED-IN: 4.9.0
REVIEW: 104690
2012-04-22 17:50:20 +02:00
Thomas Lübking
9ca81a2f79 move sync dbus calls to kactivitymanagerd into extra thread
to prevent broken dbus chain from blocking the compositor

CCBUG: 293104
REVIEW: 104563
2012-04-20 23:59:37 +02:00
Martin Gräßlin
c4d8a54e98 Keep position in stacking order for deleted windows
Workspace::addDeleted swaps the Client with the Deleted in the
stacking order. For Unmanaged windows the Deleted is appended
to the stacking order which is the same layer.

When the deleted is closed the window is removed from the stacking
order.

The result is that a deleted window is no longer raised above all
other clients.

REVIEW: 104519
BUG: 158262
FIXED-IN: 4.9.0
2012-04-20 08:36:24 +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
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
Martin Gräßlin
a0c6f70a0e Drop refresh method on D-Bus interface
The method is nowhere inside KWin called, nor used as a slot.
It's also not used from any of the KCMs and the method does not
do what the name says. It just shows and hides a window as big
as the screen geometry.

REVIEW: 104418
2012-04-01 08:11:54 +02:00
Thomas Lübking
06ab909eb2 check for requested opengl graphicssystem rather than raster twice ;-) 2012-03-30 15:25:49 +02:00
Martin Gräßlin
2fb8fb1c21 Introducing a build option for KActivities support
REVIEW: 104100
2012-03-30 09:13:46 +02:00
Martin Gräßlin
81c6eeb4f4 Remove commented code from old scripting
SVN_SILENT
2012-03-24 08:11:10 +01:00
Thomas Lübking
eb83686d56 [Janitorial] Remove legacy "rules" to ignore position request and focus stealing prevention
REVIEW: 104274
2012-03-21 22:32:33 +01:00
Martin Gräßlin
23485fd604 Add graphics system information to debug output 2012-03-08 07:46:21 +01:00
Martin Gräßlin
214375f923 Query KWin for available debug output
This adds extensive support information about the running instance
by printing out all used options, the compositing information
including GL platform, loaded effects and active effects.

The debug output can be retrieved through D-Bus:

qdbus org.kde.kwin /KWin supportInformation

or through a KWin Script (use desktop console):

print(workspace.supportInformation())

REVIEW: 104142
2012-03-04 15:21:10 +01:00
Martin Gräßlin
6c225755fc Drop C++ based Desktop Change OSD
No longer needed as it has been replaced by a declarative script.
2012-03-02 09:10:10 +01:00
Martin Gräßlin
212908ee88 Refactoring of KWin::Options: getter methods instead of public variables 2012-02-27 19:31:58 +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
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
Martin Gräßlin
075f6f988a Remove unused scripting import 2012-01-21 10:56:17 +01:00
Thomas Lübking
0b23c516a7 add support for graphicssystem selection
REVIEW: 103430
CCBUG: 289904
2012-01-02 18:53:20 +01:00
Martin Gräßlin
a3bed4b7ba Connect Kephal signals directly to screenChangedTimer
No need to have a slot for each screen change which only starts
the screenChangedTimer.
2011-12-31 15:01:41 +01:00
Martin Gräßlin
6f9f736973 Merge branch 'kwin/tabbox-window-strip' into integration 2011-12-21 07:45:52 +01:00
Martin Gräßlin
572cd64af5 Import of a KCM for KWin scripts
This KCM has been implemented by Tamas Krutk in the scope of
Google Code-In.

It is a simple KCM just listing all available scripts and allowing
to import/export them.

This will be further extended alongside the planned scripting changes
in 4.9.
2011-12-21 07:28:51 +01:00
Thomas Lübking
3c3d6c960a Revert "bypass timer for zero delay focus requests"
It's more a timing than an event queue thing?!
This reverts commit 5a3bf46244bfc92aea1ab4683c5b31c018ce1320.
2011-12-06 14:23:04 +01:00
Thomas Lübking
a683eeba11 Revert "fix focus delay optimization"
It's more a timing than an event quqe thing?!
This reverts commit c039abe4eadafb16c6556ff07ea091f606b234fb.
2011-12-06 14:22:21 +01:00
Thomas Lübking
e1a63303b6 fix focus delay optimization 2011-12-06 13:54:14 +01:00
Thomas Lübking
8b77a204ea bypass timer for zero delay focus requests 2011-12-05 21:09:16 +01:00
Thomas Lübking
117eb46684 add mouse preference against focus chain
there's currently no GUI config item, use
   kwriteconfig --file kwinrc --group Windows --key NextFocusPrefersMouse true
   qdbus org.kde.kwin /KWin reconfigure

BUG: 159989
CCBUG: 80897
FIXED-IN: 4.8
2011-12-01 13:13:13 +01:00
Martin Gräßlin
946038f3c0 Use isDisplayed instead of isGrabbed to check if TabBox is shown
IsDisplayed also works in non-modal mode. IsGrabbed was just legacy.
2011-12-01 11:06:19 +01:00
Anton Kreuzkamp
98c89bcfd0 Make the window-tabbing group of a window public via an XProperty. 2011-11-07 20:52:21 +01:00
Thomas Lübking
4cd4481663 don't use const_iterator's when calling non const functions
BUG: 282933
FIXED-IN: 4.7.4
2011-11-01 21:24:18 +01:00
Fredrik Höglund
44165bb0d1 kwin: Initialize QElapsedTimers by calling invalidate()
QElapsedTimer doesn't have a constructor that initializes the
private members. This means that calls to isValid() will depend
on uninitialized data when the timer has never been started.

elapsed() and restart() will also use and return values
computed from uninitialized data.

This fixes several valgrind errors.
2011-10-29 17:40:09 +02:00
Luboš Luňák
1876e8fd01 ensure that moving between screens does not involve unrelated struts 2011-10-04 11:41:27 +02:00
Luboš Luňák
81ac707969 with separate focus for screens, don't change screens on desktop change 2011-09-30 19:24:42 +02:00
Luboš Luňák
898052f3d5 better window position when moving a window between screens 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
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
Thomas Lübking
8c668e6126 fix tabbing ./. utility hiding
BUG: 225500
REVIEW: 102699
2011-09-25 17:52:05 +02:00
Martin Gräßlin
cdfd98e926 Drop the opacity menu in KWin useractions menu (Alt+F3)
See discussion on mailinglist:
http://lists.kde.org/?l=kwin&m=131368803718693&w=2

REVIEW: 102376
2011-08-29 06:59:40 +02:00
Montel Laurent
62c5a5e276 normalize signal/slots 2011-08-17 23:51:55 +02:00
Jaime Torres
664aaa1b60 ++ prefix for non-trivial data-types
change suffix ++ to prefix ++ to speed up a little bit not-trivial
data-types. discovered by cppcheck

REVIEW: 102057
2011-08-02 17:21:56 +02:00
Arthur Arlt
e985201114 Fix broken build if tiling is disabled 2011-08-02 14:13:08 +02:00
Martin Gräßlin
fb4d148f53 Move control of desktop layout from pager to KWin
The desktop layout (number of rows) should be
controlled by the window manager as it is also
responsible for the number of desktops and the
names of them.

The setting for the rows is moved from the pager
UI to the virtual desktops KCM. The desktop layout
is set when KWin starts and updated by the KCM.

With this change there is no process claiming the
manager selection for pager any more. This means
the KDE Plasma Workspaces are no longer compliant
to the complete section of _NET_DESKTOP_LAYOUT in
the EWMH.

REVIEW: 102073
BUG: 277965
FEATURE: 105779
FEATURE: 213353
FIXED-IN: 4.8.0
2011-07-31 16:47:27 +02:00
Arthur Arlt
9a18de0171 Move creation of Tiling some lines up
Since there was a crash caused by calling a function of
the not yet initialized class Tiling, the creation was
just moved some lines up. The problem does not occur anymore.

BUG: 278740
2011-07-29 11:03:34 +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
8c3a0e218a Move tile.cpp, tile.h, tilinglayout.cpp and tiling.h to directory tiling/
The three files are moved to the directory tiling/ and the includes were
adjusted as well as the CMakeLists.txt file.
2011-07-28 13:39:28 +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
f29d151220 Use configChanged() signal in TilingLayouts
Since there is a signal triggered if configurations are changed, the
reconfiguration method in TilingLayouts was made a slot and is connected
to the appropriate signal in Workspace.
2011-07-28 13:06:30 +02:00
Arthur Arlt
bc4fea10f3 Replace direct method calls with signal and slot mechanism
The direct method calls for createTile(), removeTile() and resizeing the
tiling layouts from class Workspace are replaced by connecting to the
appropriate signal. The methods are slots now and a new slot for resizeing
the tiling layouts was introduced.
2011-07-28 13:06: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
Arthur Arlt
04fd63b201 Move scene->windowAdded() to Toplevel's setupCompositing() function
Moved the function call of scene->windowAdded() to setupComposition() of
Toplevel. The function calls from Workspace were removed, since
windowAdded() is called by setupCompositing() now, which is called anyway.

REVIEW: 102047
2011-07-25 12:27:43 +02:00
Alex Fiestas
fa199457af Try to call desktopRezie once intead of doing it in all XRandR events.
When a screen is disconnected XRandR emits 3 events instead of just one:
1-Disconnected screen resized
2-Disconnected screen moved
3-Disconnected screen removed

Before this commit we were calling desktopResize on each event which
between other things restart the composite (not necessarily the faster
thing to do...).

So, in order to be able to call desktopResize only once, now we're
handling individually each event, when one of them happens a QTimer is
started/restarted on each event and desktopResized is called owhen
QTimer.timeout

    The current interval is 100msec
2011-07-24 22:57:33 +02:00
Arthur Arlt
5d2f8356f4 Make reconfigure() a Q_SLOT
make reconfigure() a Q_SLOT and connect to the signal configChanged()
of class Workspace.

REVIEW: 101942
2011-07-15 22:23:29 +02:00
Arthur Arlt
c1c883a8a7 Introduce new signal configChanged() to Workspace
To get rid of direct method calls and numerous #ifdefs a new signal
configChanged() is introduced to class Workspace. Every module
which is interested in reloading the configuration is needed to connect to
this signal.
Initially this is done for the reconfiguration of DesktopChangeOSD().
2011-07-15 22:05:38 +02:00
Arthur Arlt
3d2f0c8ace Make numberDesktopsChanged() a Q_SLOT
Since there still is a signal available in class Workspace which is
emitted if the number of desktops has changed, we now make use of it
by transforming numberDesktopsChanged() into a Q_SLOT. It is connected
to the appropriate signal and all direct method calls from Workspace were
removed.

REVIEW: 101932
2011-07-15 22:01:09 +02:00
Arthur Arlt
7b86e7f1c3 Introduce a build option for DesktopChangeOSD
A build option is introduces whether the DesktopChangeOSD functionality
should be built or not. It is set to ON by default.
2011-07-15 21:58:30 +02:00
Arthur Arlt
ad2fb989cc Make desktopChanged() a slot
The method desktopChanged() was formerly called direcly and is now a slot,
which is connected with the signal currentDesktopChanged().
2011-07-15 21:58:30 +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
9442855834 protect scene access, fix instant segfault when non compositing 2011-07-10 01:25:41 +02:00
Arthur Arlt
d8072be54d Move OverlayWindow from Workspace to its own class
All the functionality of Overlay Window is moved to its own class
OverlayWindow. It is created and owned by class Scene, since almost
all function calls are called from this class.

REVIEW: 101866
2011-07-09 19:08:48 +02:00
Montel Laurent
2d9fd13b01 Fix compile warning 2011-07-08 21:50:01 +02:00
Martin Gräßlin
039c025bfb Add a build option for screen edge support 2011-07-07 18:29:11 +02:00
Arthur Arlt
e6d8585559 Do not include scene.h in workspace.cpp and events.cpp anymore
It is no longer necessary to include scene.h in workspace.cpp and
events.cpp.

REVIEW: 101706
2011-07-05 11:35:27 +02:00
Arthur Arlt
903bcb42fb Provide build option for TabBox functionality
Since the TabBox functionality is not feasible for any platform KWin is
used on (e.g. tablet PCs), a build option is added to decide, if the
TabBox functionality should be build or not.

REVIEW: 101511

@Sebastian: Martin wanted me to let you know that it is now possible
to disable building Tabbox
CCMAIL: sebas@kde.org
2011-07-05 11:00:23 +02:00
Arthur Arlt
d1b5d00129 Refactoring TabBox
Move the funtionality of TabBox from class Workspace to class TabBox to make
it possible to deactivate this feature by setting a compile flag.
All methods and variables are now provided by class TabBox and calls from other
classes go directly to TabBox.
The code for configuring the shortcut keys has also been moved to class TabBox
from kwinbindings.cpp.
2011-07-05 10:59:53 +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
bf419c256d Introduced init() method to class ScreenEdge
The initialization was done in class Workspace before but is now
moved to class ScreenEdge in its own init() method. Is is called from
Workspace at the same position where the initialization took place before.
2011-07-04 13:24:51 +02:00
Arthur Arlt
5ead1d90a1 Remove screen edge handling methods from workspace
Since the newly introduced class ScreenEdge and its calls work fine,
the redundand methods from workspace are now removed.
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
7533bfac75 Introduce member variable ScreenEdge to Workspace
This commit adds a new member variable m_screenEdge to Workspace. It is
initialized in the constructor and deleted in the deconstructor.
A getter is introduced as well.
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
494edbe76f Remove Mouse Emulation from KWin
Mouse Emulation is provided in a better way by KAccess. This provides
a global systemsettings switch to enable mouse emulation instead of
a shortcut and Xkb to enable mouse control with keyboard instead of
sending out fake mouse events.

So no need for duplicated functionality in KWin.

REVIEW: 101406
2011-06-23 11:56:00 +02:00
Martin Gräßlin
20941aca53 Fix regression of setting a window to all desktops
The logic to prevent errornous desktops broke setting a window
to all desktops through the task manager. For some reason all
desktops is -1 which is of course less than 1 ;-)
2011-05-27 16:47:45 +02:00
Philipp Knechtges
2c0b0e9f18 Performance bugfix.
In case we use OpenGL compositing and KWin is started with the raster graphicssystem,
the decoration gets painted with the raster backend.
REVIEW: 101370
2011-05-18 21:27:11 +02:00
Martin Gräßlin
74accbd64a Remove obsoleted code
Should have been removed with 44b83f951aeb3221c43ef3356e46650248b673cd
2011-05-15 14:33:40 +02:00
Thomas Lübking
2534acc961 Don't store virtual desktop settings while loading them
fwd-port of a2d4c3ebdf7137f3543c88245f0bfd3dba308ebf
CCBUG: 272666
2011-05-08 17:14:45 +02:00
Martin Gräßlin
f97c92fde9 KWin does not require a decoration plugin any more
With config option "NoPlugin" in group "Style" it is possible to
no request that KWin should be run without a decoration plugin.
This is a change for Plasma Active to properly support no decorations.

As well if a decoration plugin cannot be loaded, KWin will no longer
exit, but continue to run just without a decoration. As a nice
side-effect changes in Oxygen no longer destroy my kwin build ;-)

BUG: 224440
FIXED-IN: 4.7.0
CCMAIL: sebas@kde.org
2011-04-28 16:05:23 +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
Aaron Seigo
d7862ace5b default to a single desktop 2011-04-26 22:28:19 +02:00
Thomas Lübking
6c89064e10 kwin: updateClientArea /after/ invalidating the screenareas
prevents segfaults when collpasing several desktops containing clients
2011-04-14 17:40:40 +02:00
Martin Gräßlin
6264370237 Merge branch 'oxygen-shadows' 2011-04-12 18:13:49 +02:00
Martin Gräßlin
16dd83bc4e Support diagonal navigation in mouse emulation 2011-04-06 17:56:00 +02:00
Martin Gräßlin
320de6abc6 Merge branch 'master' into oxygen-shadows
Conflicts:
	kwin/atoms.cpp
	kwin/atoms.h
2011-04-04 18:09:59 +02:00
Thomas Lübking
31278d570e add rule/property based composite blocking 2011-04-04 01:59:52 +02:00
Thomas Lübking
bfd922d7fa strip down kwin shortcut allocation code 2011-04-03 23:18:44 +02:00
Thomas Lübking
b32331afcf fix & cleanup Workspace::setNumberOfDesktops()
encapsulate all relevant (vector resizing) code to
Workspace::setNumberOfDesktops and invoke it from
Workspace::loadDesktopSettigns, this will likely
fix
CCBUG:200213
2011-04-03 22:44:19 +02:00
Martin Gräßlin
12220a0d59 Initial implementation of new Shadows in KWin
For a complete documentation of new functionality refer to:
http://community.kde.org/KWin/Shadow

The current implementation includes a new Shadow class and Toplevel
holds a pointer to an instance of this class. The Shadow class reads
the data from the X11 Property. There is one extended class located
in SceneOpenGL to render the shadow.

Compositor is adjusted to include the shadow region into the painting
passes.

Implementation for XRender still missing and Shadow needs to respond
to size changes of the Toplevel to update cached shadow region and
WindowQuads.
2011-03-27 12:33:07 +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
16a025d907 Remove dynamic desktop layout
This has never been implemented properly. There is only the boolean
indicating that the desktop layout is dynamic but it is nowhere set
or used. So better remove it.
2011-03-13 14:04:02 +01:00
Martin Gräßlin
39ab2cf29e MouseChanged becomes a signal 2011-03-12 14:37:30 +01:00
Thomas Lübking
0b1599680d stage one, call martin 2011-03-08 22:05:09 +01:00
Thomas Lübking
0c5d47f3ae unify composite activation, 'Enable' only controls initial state 2011-03-06 22:35:13 +01:00
Martin Gräßlin
747afb4225 NumberDesktopsChanged becomes a signal
TODO: connect DesktopChangeOSD also to the signal
2011-03-06 20:10:11 +01:00
Martin Gräßlin
15757e953a TabBox uses signals to notify the effects
EffectsHandlerImpl just forwards the signals from TabBox. In order
to have a valid pointer to the TabBox, the TabBox is now initialized
before compositing in Workspace.
2011-03-06 12:15:16 +01:00
Martin Gräßlin
e355700e6e EffectsHandler emits windowDeleted signal
Workspace emits a deletedRemoved signal which the EffectsHandlerImpl translates
into a windowDeleted signal.
2011-02-27 10:47:42 +01:00
Martin Gräßlin
ab6f2ba1fd EffectsHandler emits windowAdded signal
All previously existing windowAdded methods are renamed to slotWindowAdded.
EffectsHandlerImpl is connected to Workspace's clientAdded signal, which is
emitted a little bit earlier than the previous direct method call. This might
change behavior.
Another signal is added to Workspace to signal that an unmanaged is added.
2011-02-25 22:06:02 +01:00
Martin Gräßlin
c3a076b6a5 EffectsHandler emits desktopChanged signal
The first signal used between EffectsHandler and Effects.
The signal is actually emitted by the EffectsHandlerImpl and only
the interested effects connect to this signal.
EffectsHandlerImpl itself is also notified by a signal from Workspace,
allowing to remove one of the many if (effects) checks.
2011-02-25 20:41:10 +01:00
Fredrik Höglund
2d81d28e7a kwin: Use QBasicTimer instead of managing the timer ID manually. 2011-02-01 16:35:51 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Martin Gräßlin
713fe54e3c Removing screenshot to clipboard functionality.
We have ksnapshot for that which uses a KWin effect to get
screenshots including shadows, which was not possible with
KWin's own implementation.

This invalidates bugs about this functionality.
BUG: 263409
FIXED-IN: 4.7.0
2011-01-30 14:24:48 +01:00
Thomas Lübking
628ceadb99 constrain number of virtual desktops
BUG: 261665

svn path=/trunk/KDE/kdebase/workspace/; revision=1214238
2011-01-13 19:05:28 +00:00
Chani Armitage
d18e95f9a6 improve stack & focuschain activity checks
BUG: 262730

svn path=/trunk/KDE/kdebase/workspace/; revision=1214045
2011-01-12 18:08:59 +00:00
Thomas Lübking
73ec13310f update utility window visibility on property change and increase hiding delay - should prevent "mystic" disappearance of gimp utilities
svn path=/trunk/KDE/kdebase/workspace/; revision=1210458
2010-12-31 13:44:17 +00:00
Thomas Lübking
337e1eac18 revert vsync strategy, fix timeouts
differecens to patch atteched to 258971:
- removed debug statements
- fixed indention...
- NON vsync strategy does not rely on the estimation, but on the time passed since the last repaint trigger, allowing a precise framerate

CCBUG: 258971


svn path=/trunk/KDE/kdebase/workspace/; revision=1210445
2010-12-31 13:14:11 +00:00
Thomas Lübking
e2dcfff601 commiting http://svn.reviewboard.kde.org/r/6120/#review9304
this should improve v'syncing, maybe v'synced "smoothness"
remaining and exposed issue are "dirty textures" w/o damage events (see the requst description)
can be diminished by increasing MaxFPS above the fastest update (or shadowed below the slowest one)
CCBUG: 258971

svn path=/trunk/KDE/kdebase/workspace/; revision=1207577
2010-12-18 16:51:43 +00:00
Chani Armitage
0e7e1aa077 stop using deprecated API, and use activity icons
svn path=/trunk/KDE/kdebase/workspace/; revision=1192050
2010-11-01 19:53:22 +00:00
Chani Armitage
03165ff8eb delete session data for deleted activities
svn path=/trunk/KDE/kdebase/workspace/; revision=1192049
2010-11-01 19:53:20 +00:00
Martin Gräßlin
545801de62 Unset noBorder when switching from Netbook to Desktop Shell.
Check on reloading of settings if the no borders for maximized windows option got disabled.
If it got disabled unset the no border option for all maximized windows to get the borders back.
BUG: 222045
FIXED-IN: 4.6.0

svn path=/trunk/KDE/kdebase/workspace/; revision=1189981
2010-10-26 14:43:29 +00:00
Chani Armitage
3c633a48ab Use an X property for activity associations
the new property name is "_KDE_NET_WM_ACTIVITIES", of type XA_STRING,
and it's a comma-separated list of activity UUIDs.

kwin should respond to other processes changing the activity list for a
window, and filter out any bogus IDs. It also caches KActivityController's
list of activities to prevent dbus deadlocks.

CCMAIL: plasma-devel@kde.org

svn path=/trunk/KDE/kdebase/workspace/; revision=1179043
2010-09-24 12:03:22 +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
Chani Armitage
24c7f96416 update activity of transients properly
svn path=/trunk/KDE/kdebase/workspace/; revision=1128655
2010-05-19 21:02:40 +00:00
Chani Armitage
59590a5993 react to activity removal
svn path=/trunk/KDE/kdebase/workspace/; revision=1126057
2010-05-13 04:06:27 +00:00
Chani Armitage
30313d2869 take advantage of the cached currentActivity
svn path=/trunk/KDE/kdebase/workspace/; revision=1126054
2010-05-13 03:10:31 +00:00
Fredrik Höglund
3b8126f7eb Get the current activity from the Workspace instead of from KActivityConsumer
in TopLevel::isOnCurrentActivity().

KActivityConsumer makes a blocking DBUS call to kded, which if done while
we're holding an X server grab can result in a deadlock if kded is blocked
waiting on a reply from the X server.

BUG: 237437

svn path=/trunk/KDE/kdebase/workspace/; revision=1126013
2010-05-12 23:23:26 +00:00
Chani Armitage
a9ad071575 Activity association for windows.
ok'd by fredrikh.
this code is buggy right now, but I promise to squash the bugs by the 19th :)


svn path=/trunk/KDE/kdebase/workspace/; revision=1125614
2010-05-11 20:30:20 +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
Nikhil Marathe
3e9377e6b4 Added comments to some tiling related code
svn path=/trunk/KDE/kdebase/workspace/; revision=1124486
2010-05-09 06:15:40 +00:00
Nikhil Marathe
f7c3b38402 Added TilingLayout::reconfigureTiling which respects per window tiling settings and is capable of updating them on the fly by being called from slotReconfigure
svn path=/trunk/KDE/kdebase/workspace/; revision=1123173
2010-05-05 13:52:09 +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
Christoph Feck
70acd11ecb SVN_SILENT --warnings
svn path=/trunk/KDE/kdebase/workspace/; revision=1118827
2010-04-25 23:37:38 +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
Martin Gräßlin
ec8d860c4b Allow effects to change the number of desktops and inform effects when the number of desktops is changed.
svn path=/trunk/KDE/kdebase/workspace/; revision=1108239
2010-03-28 09:04:14 +00:00
Davide Bettio
45bcf3173a * Removed "Advanced Button" from screensaver kcm.
* Screensaver screen edges settings have been merged with kwin screen edges settings.
* Removed screensaver priority configuration: we assume that users don't need to change screensaver priority.
REVIEWBOARD: http://reviewboard.kde.org/r/3240/

svn path=/trunk/KDE/kdebase/workspace/; revision=1101792
2010-03-10 22:25:20 +00:00
Lucas Murray
f9a5876ac9 Don't auto-group transient windows.
svn path=/trunk/KDE/kdebase/workspace/; revision=1078327
2010-01-22 03:13:18 +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
Martin Gräßlin
f3dbf99a9d List screen edges kcm in "Configure window behaviour".
svn path=/trunk/KDE/kdebase/workspace/; revision=1069509
2010-01-03 15:43:18 +00:00
Fredrik Höglund
042af295ee Update _NET_SUPPORTED based on AbilityExtendIntoClientArea when
switching decorations.

svn path=/trunk/KDE/kdebase/workspace/; revision=1063015
2009-12-16 18:03:15 +00:00
Lucas Murray
a00c06c71a If two windows cannot be on the same desktop then don't allow them to be
grouped.
BUG: 217434

svn path=/trunk/KDE/kdebase/workspace/; revision=1062353
2009-12-14 12:29:48 +00:00
Fredrik Höglund
0a8c06b054 Implement support for _KDE_NET_WM_FRAME_OVERLAP.
svn path=/trunk/KDE/kdebase/workspace/; revision=1054393
2009-11-25 23:32:35 +00:00
Lucas Murray
e4ab19a936 Allow automatic grouping of unrelated windows by matching them with a
window rule ID.

svn path=/trunk/KDE/kdebase/workspace/; revision=1050040
2009-11-16 13:31:02 +00:00
Lucas Murray
535737e1fe Add "automatically group identical windows" feature to window tabbing.
svn path=/trunk/KDE/kdebase/workspace/; revision=1049953
2009-11-16 10:09:03 +00:00
Kevin Ottens
167823f5fa Make it build with QT_STRICT_ITERATORS.
svn path=/trunk/KDE/kdebase/workspace/; revision=1049926
2009-11-16 08:22:50 +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
Lucas Murray
711879a993 Be more strict.
svn path=/trunk/KDE/kdebase/workspace/; revision=1031996
2009-10-06 16:04:16 +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
Martin Gräßlin
76f17e6de1 Here comes the new TabBox. It is a complete rewrite using a MVC approach. Here some highlights:
* Models and Delegates for Clients and Desktops
 * Horizontal, vertical and tabular layout
 * Layout of one item can be configured by an XML definition
 * A desktop item can include a client list
 * An optional second list view showing only the selected item
 * A new KCM "kwintabbox"
 * An alternative TabBox with independent settings and keybindings
 * Optional Highlight Windows effect integration
 * List scrolls instead of removing items
 * Scroll wheel support
 * Cursor key support
 * Middle click on item closes window
BUG: 195745
BUG: 197187
BUG: 201103
FEATURE: 118184
FEATURE: 156723
FEATURE: 177441
FEATURE: 182897
FEATURE: 193882
GUI:

svn path=/trunk/KDE/kdebase/workspace/; revision=1022861
2009-09-13 11:36:45 +00:00
Hugo Pereira Da Costa
88dc7eccfd notify decorations when compositing is enabled/disabled
svn path=/trunk/KDE/kdebase/workspace/; revision=1021803
2009-09-10 05:06:53 +00:00
Martin Gräßlin
53aaaf471d Adding a new option to disable the cursor pushback for active screen edges.
I haven't added it to the UI as the screen edges kcm is already a little bit cluttered with complicated options.
So if you want to disable the pushback add option "ElectricBorderPushbackPixels" to section [Windows].
FEATURE: 198225

svn path=/trunk/KDE/kdebase/workspace/; revision=1021306
2009-09-08 20:01:16 +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
Martin Gräßlin
369910865a Add "show desktop" to screen edges.
FEATURE: 195359

svn path=/trunk/KDE/kdebase/workspace/; revision=988839
2009-06-28 20:32:50 +00:00
Martin Gräßlin
9f70ddce3b When reinitCompositing we can assume that the user wants to restart compositing even if compositing has been suspended.
So we end suspend compositing and send signal that compositing is active. That way reinitCompositing behaves like resume compositing when suspended.
BUG: 188118

svn path=/trunk/KDE/kdebase/workspace/; revision=961602
2009-04-30 12:51:55 +00:00
Luboš Luňák
e9e08c35cb Do not mistakenly report that compositing could not be enabled.
The compositing kcm now results in two reconfigurations of KWin,
and the second one meant that waitForCompositingSetup() didn't work
correctly.


svn path=/trunk/KDE/kdebase/workspace/; revision=960555
2009-04-28 16:20:26 +00:00
Fredrik Höglund
e92aab0518 Implement initial support for ARGB window decorations.
Based on earlier work done by Lubos Lunak and ideas by Lucas Murray.

svn path=/trunk/KDE/kdebase/workspace/; revision=957680
2009-04-22 17:29:56 +00:00
Martin Gräßlin
3d5ad590e2 New on-screen-display for desktop change. It highlights the new desktop and shows arrows from the old to the new desktop. It replaces the popupinfo which only showed the desktop name. Nevertheless keeping popupinfo in svn so if wanted we can add an option to select between osd and popupinfo.
FEATURE: 185799

svn path=/trunk/KDE/kdebase/workspace/; revision=950182
2009-04-06 16:09:34 +00:00
Lucas Murray
0ffcc70c18 Add support for hardcoded non-KWin-related active screen edge actions,
first to be added is one to display the Plasma dashboard. Implemented
the "trigger cooldown" option. Fixed a few edge action conflicts such
as forcing desktop switches when moving windows and the like.
BUG: 170393

svn path=/trunk/KDE/kdebase/workspace/; revision=933166
2009-02-28 08:33:16 +00:00
Lucas Murray
913c4f387a SVN_SILENT Left-overs from the revert.
svn path=/trunk/KDE/kdebase/workspace/; revision=929351
2009-02-21 08:33:13 +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