Commit graph

289 commits

Author SHA1 Message Date
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
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
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
00e131a1a5 Allow window tabbing titlebar actions to be configurable; Set default
middle-click titlebar action to tab drag; Fix KCM config file corruption
caused by r1015273.
BUG: 214898

svn path=/trunk/KDE/kdebase/workspace/; revision=1050309
2009-11-17 07:17:49 +00:00
Lucas Murray
f57028f387 Take into account the decoration when resizing windows based off their
min/max size hints.

svn path=/trunk/KDE/kdebase/workspace/; revision=1049889
2009-11-16 02:53:12 +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
Jacopo De Simoi
71a73acae8 Avoids a nasty race condition that caused corrupted window decorations
BUG:199735


svn path=/trunk/KDE/kdebase/workspace/; revision=1046461
2009-11-08 19:47:58 +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
743e058af5 Detect when _MOTIF_WM_HINTS gains or loses the no border hint.
Patch by Daniel Erat.
BUG: 201523

svn path=/trunk/KDE/kdebase/workspace/; revision=1030932
2009-10-03 14:32:24 +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
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
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
8981223956 Reimplement addRepaintFull() in Client and add the padding to the repaint region.
CCBUG: 201596

svn path=/trunk/KDE/kdebase/workspace/; revision=1004121
2009-07-29 11:48:55 +00:00
Martin Gräßlin
ba27d2ebb0 Copy decoration pixmaps to Deleted. By that we see the decoration also when having a fade out animation.
As this is a bigger commit I will wait with backporting to 4.3 for something about two or three weeks and will only backport if nobody yells.
BUG: 201780

svn path=/trunk/KDE/kdebase/workspace/; revision=1004096
2009-07-29 11:07:28 +00:00
Fredrik Höglund
3685b3260a Make sure that the repainted area includes the whole area
used by the decoration.

This fixes ghost shadows being left behind when windows
are minimized.

svn path=/trunk/KDE/kdebase/workspace/; revision=980474
2009-06-11 20:12:11 +00:00
Lucas Murray
8d09ed341a Remove old decoration shadow API, rename AbilityProvidesShadow and add
support for the new decoration shadow API in the shadow effect.

svn path=/trunk/KDE/kdebase/workspace/; revision=980130
2009-06-11 08:11:13 +00:00
Fredrik Höglund
809bdaa1f0 Fix a crash that happens sometimes when gwenview starts.
svn path=/trunk/KDE/kdebase/workspace/; revision=973675
2009-05-27 16:08:26 +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
Fredrik Höglund
8bba7aed7d Make it possible for the decorations to paint outside the window frame
when compositing is enabled, by letting them add additional padding
to the sides of the frame.

svn path=/trunk/KDE/kdebase/workspace/; revision=963586
2009-05-04 22:35:33 +00:00
Martin Gräßlin
1c45f2a2d8 Forgot to add the changes to client for argb decoration (rev 957681)
svn path=/trunk/KDE/kdebase/workspace/; revision=957718
2009-04-22 19:00:51 +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
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
Lucas Murray
038667db7a SVN_SILENT Standardize coding style on client.* and workspace.*
svn path=/trunk/KDE/kdebase/workspace/; revision=898612
2008-12-18 13:50:57 +00:00
Lucas Murray
d5a630cabd When window shade hovering is enabled do not immediately shade the
window once the cursor leaves the window, instead wait a little while.
Patch by Marcel Partap.
BUG: 81085

svn path=/trunk/KDE/kdebase/workspace/; revision=897056
2008-12-15 08:27:17 +00:00
Jason vanRijn Kasper
fb0a01228f This change allows KWin to use the new NETWinInfo2 class (binary
compatibility class) and subsequently properly handle the
_NET_WM_FULLSCREEN_MONITORS EWMH spec hint.

svn path=/trunk/KDE/kdebase/workspace/; revision=885362
2008-11-17 08:03:39 +00:00
Lucas Murray
154c19b0e7 Make the client shadowOpacity() return a relative opacity instead of absolute.
svn path=/trunk/KDE/kdebase/workspace/; revision=873440
2008-10-19 13:43:16 +00:00
Lucas Murray
af1b639a9d Rename the new decoration API and mark it as unstable. Supporting a hacked API is suicide.
Will correctly handle this in KDE 4.3 by using ARGB decorations, even if it's not pretty.

svn path=/trunk/KDE/kdebase/workspace/; revision=872795
2008-10-18 08:10:37 +00:00
Lucas Murray
899d578c49 Merge Libkdecoration2 Git branch.
WARNING: Breaks shadow effect. I don't think it causes anything to crash anymore but it is VERY ugly visually.

Contains:
 - New decoration API that allows decorations to change the way shadows look.
 - Shadows now wobble.
 - API example code in the Oxygen decoration.
 - Added buildQuads() effect plugin hook.
 - Work on the shadow effect to use the new decoration shadow API as well.
 - Added IDs to WindowQuads.
 - Added public accessors to texture coords in WindowVertex.

Would like all this to be reviewed.

CCMAIL: kwin@kde.org

svn path=/trunk/KDE/kdebase/workspace/; revision=872473
2008-10-17 10:30:43 +00:00
Luboš Luňák
27182e3800 Workaround for kwin<->kglobalaccel deadlock, when KWin has X grab and the kded
kglobalaccel module tries to create the key grab. KWin should preferably grab
they keys itself anyway :(.


svn path=/trunk/KDE/kdebase/workspace/; revision=866294
2008-09-30 12:03:20 +00:00
Luboš Luňák
14ae8d2dc9 Support for unredirecting fullscreen windows, i.e. games etc. can paint directly
and not be slowed down by going through compositing. Turned on and no UI option
in the naive hope that it won't cause any real problems. Maybe effects doing
window previews should get API to suspend unredirect though.


svn path=/trunk/KDE/kdebase/workspace/; revision=851742
2008-08-24 13:32:57 +00:00
Luboš Luňák
818070d3aa Keep fullscreen windows covering the whole screen when it is the topmost
window on its xinerama screen.
FEATURE: 126817


svn path=/trunk/KDE/kdebase/workspace/; revision=851204
2008-08-23 09:20:42 +00:00
Luboš Luňák
63b01aff5d Rework handling of mapping and unmapping windows, in particular:
- the NormalState/IconicState things in ICCCM need to match exactly
  the real mapping state, so ensure that, no matter how superfluous that is
- extend the option for having live window previews either for all
  windows or for only all shown windows (default)
FEATURE: 163385


svn path=/trunk/KDE/kdebase/workspace/; revision=845772
2008-08-12 11:02:58 +00:00
Lucas Murray
0581746327 Allow moving of maximized windows across screens
BUG: 131299

svn path=/trunk/KDE/kdebase/workspace/; revision=837644
2008-07-25 10:31:47 +00:00
Luboš Luňák
3f4a2dfaed Add functions for querying xinerama screens to effects API,
from Lucas Murray <admin@undefinedfire.com>.


svn path=/trunk/KDE/kdebase/workspace/; revision=818782
2008-06-09 16:09:56 +00:00
Luboš Luňák
afa5700c7b Don't initialy minimize a window if it has some main window open,
but it was internall optimized away (e.g. one group transient plasma
dialog open, minimized, open another group transient dialog from plasma).


svn path=/trunk/KDE/kdebase/workspace/; revision=798569
2008-04-18 15:50:12 +00:00
Luboš Luňák
e7c88f309d Reduce the difference between noborder requested by the application
and set by the user - they're now interchangeable. Which means
that Alt+F3/Advanced/No border can put the window decoration
back on the KRunner window regardless of what Plasma or any other
app thinks.


svn path=/trunk/KDE/kdebase/workspace/; revision=788964
2008-03-23 00:12:11 +00:00
Luboš Luňák
a32b9ff1e7 Don't keep a separate flag for the Motif noborder flag.
svn path=/trunk/KDE/kdebase/workspace/; revision=788801
2008-03-22 14:34:22 +00:00
Luboš Luňák
fbbe94753e Repaint decoration after configuration change when it doesn't need a reset.
svn path=/trunk/KDE/kdebase/workspace/; revision=788371
2008-03-21 12:57:41 +00:00
Luboš Luňák
38291eb82c Make border sizes while maximizing take effect even when the actual
geometry does not change.
BUG: 158252


svn path=/trunk/KDE/kdebase/workspace/; revision=787741
2008-03-19 19:32:32 +00:00
Luboš Luňák
fc848b8cd9 Don't paint windows that have been hidden by KWin itself.
svn path=/trunk/KDE/kdebase/workspace/; revision=778351
2008-02-23 13:41:53 +00:00
Adriaan de Groot
214d575aa3 Qt3 -> Qt4 style includes.
qdrawutil.h doesn't seem to have a purely Qt4-style equivalent, so including the directory there disambiguates it from the Qt3 header.

svn path=/trunk/KDE/kdebase/workspace/; revision=770116
2008-02-02 20:54:19 +00:00
Luboš Luňák
01bf6cbb4c License cleanup - add headers where missing, be explicit about GPL
being v2+ (right now it says just GPL, which according to GPL itself
means any GPL). Decoration clients will come later.
CCMAIL: kwin@kde.org


svn path=/trunk/KDE/kdebase/workspace/; revision=742302
2007-11-27 19:40:25 +00:00
Luboš Luňák
d6b7ef180d No kde3/qt3 support in kwin core. Saves about 150M of memory in gdb
by not loading the support libraries and the complete kdelibs stack it depends
on. Gdb taking 0.5M and lousy handling of near-OOM in Linux kernel
can be a pretty bad combination :(.


svn path=/trunk/KDE/kdebase/workspace/; revision=741856
2007-11-26 15:42:44 +00:00
Luboš Luňák
dbe1f3f875 Avoid one more case of unnecessary discarding window pixmap.
svn path=/trunk/KDE/kdebase/workspace/; revision=728563
2007-10-23 17:38:39 +00:00
Arto Hytönen
e1c6433c8e pass-by-value -> reference-to-count fixes
svn path=/trunk/KDE/kdebase/workspace/; revision=707741
2007-09-02 20:01:17 +00:00
Luboš Luňák
ab1582de27 It's really interesting that KWin has had support for an arbitrary root
window, but I don't think it really works these days, and it's probably
also not useful at all.


svn path=/trunk/KDE/kdebase/workspace/; revision=689949
2007-07-19 16:24:51 +00:00
Luboš Luňák
c29c66832d Make quads carry information about whether the quad is part
of decoration or the actual window contents.


svn path=/trunk/KDE/kdebase/workspace/; revision=689554
2007-07-18 15:01:59 +00:00
Luboš Luňák
9052116e4f Support for having previews even for unmapped windows - they're
actually kept mapped, so that they still have the backing pixmap.
Plus some small tricks to prevent such windows from interfering.
Only two basic modes are implemented right now.


svn path=/trunk/KDE/kdebase/workspace/; revision=683156
2007-07-04 09:51:10 +00:00
Luboš Luňák
162d6ac7c9 Support for _NET_WM_SYNC_REQUEST, based on a patch
by Rayiner Hashem <gtg990h@mail.gatech.edu>.


svn path=/trunk/KDE/kdebase/workspace/; revision=679986
2007-06-25 08:51:44 +00:00