Commit Graph

452 Commits (1be3a7a9f074ddaf95a120ed72a3aac94a137042)

Author SHA1 Message Date
Martin Gräßlin d6a69aea4f [kwin] NETRootInfo::setDesktopGeometry doesn't expect a desktop argument any more 2013-11-18 13:57:06 +01:00
Martin Gräßlin ba66fd9ef6 [kwin] NETWinInfo2 becomes NETWinInfo
And takes a xcb_connection_t instead of Display. Also our own class
is adjusted to no longer need the connection being passed in.
2013-11-18 13:56:28 +01:00
Martin Gräßlin 0056302652 [kwin] updateXTime before establishing grab for move resize mode
Grabbing the pointer failed causing unrestricted move resize to
operate incorrectly (position didn't update).
2013-11-13 11:28:05 +01:00
Bhushan Shah 935851a2b5 kDebug -> qDebug in kwin 2013-11-01 17:00:41 +05:30
Thomas Lübking 3594550b14 Merge branch 'KDE/4.11'
Conflicts:
	kwin/eglonxbackend.cpp
	kwin/glxbackend.cpp
2013-09-25 23:21:36 +02:00
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