Commit graph

363 commits

Author SHA1 Message Date
Lucas Murray
8960c552d2 Remove OpenGL driver whitelist; Add protection against crashy glXQuery
functions and share the value with the KCM; Fallback to XRender
compositing if OpenGL fails to work correctly; Rearrange setting order
in options.h slightly and fix variable names

svn path=/trunk/KDE/kdebase/workspace/; revision=1079919
2010-01-25 10:02:08 +00:00
Fredrik Höglund
586f4e9010 Check if the decoration supports the frame overlap strut in
Client::transparentRect() and Client::layoutDecorationRects().

svn path=/trunk/KDE/kdebase/workspace/; revision=1063057
2009-12-16 20:51:54 +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
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
424d358fd2 Less Krazy warnings please.
svn path=/trunk/KDE/kdebase/workspace/; revision=1042583
2009-10-30 08:10:35 +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
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
9f420c13ab Add ability to switch windows spatially with alt+meta+<direction>.
Patch based off code by Dominik Kapusta and Lindsay Roberts.
FEATURE: 74214

svn path=/trunk/KDE/kdebase/workspace/; revision=1030903
2009-10-03 13:09:38 +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
faa64877bf Add keybinding for show desktop.
No shortcut is set by default. Thanks to Alexander (alex3255) for providing the patch.
FEATURE: 182729

svn path=/trunk/KDE/kdebase/workspace/; revision=1022596
2009-09-12 08:01:44 +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
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
Martin Gräßlin
0c91716572 Track change of global shortcuts for tabbox. Required for the tabbox to work correctly when a shortcut is changed.
BUG: 163732

svn path=/trunk/KDE/kdebase/workspace/; revision=972533
2009-05-25 08:35:48 +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
63edbaff81 Show current compositing state (disabled/suspended/active) in Desktop Effects KCM and add a button to resume/suspend compositing. So it should be easier for the user to resume compositing if he does not know about the shortcut.
CCBUG: 188118

svn path=/trunk/KDE/kdebase/workspace/; revision=955636
2009-04-18 10:07:16 +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
Martin Gräßlin
9174c43eb0 Show notification when compositing is suspended via dbus.
svn path=/trunk/KDE/kdebase/workspace/; revision=948322
2009-04-02 19:14:48 +00:00
Martin Gräßlin
5f5399a1cc Add toggleCompositing to dbus interface. This method call should be used by external applications instead of changing kwin's config and forcing kwin to reload.
FEATURE: 181544

svn path=/trunk/KDE/kdebase/workspace/; revision=948160
2009-04-02 12:59:52 +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
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
893b0c2c71 Merge DesktopLayout class into Workspace.
svn path=/trunk/KDE/kdebase/workspace/; revision=926020
2009-02-14 15:40:52 +00:00
Lucas Murray
dd28e15a1b Allow desktop effects to access the new DesktopLayout class. Replaced
all code that used calcDesktopLayout() so the function could be removed.
Minor changes to the DesktopLayout class itself.

svn path=/trunk/KDE/kdebase/workspace/; revision=925930
2009-02-14 14:49:46 +00:00
Lucas Murray
4681129e4b Move desktop layout code into a separate file and class. This will allow
adding more complex desktop layout features (Such as desktop
rearranging, and non-rectangular layouts) easier in the future.
Workspace::calcDesktopLayout() has been deprecated.

svn path=/trunk/KDE/kdebase/workspace/; revision=925812
2009-02-14 09:46:12 +00:00
Lucas Murray
b55115a8be Prevent recursion loop in Toplevel::screen() and
Workspace::activeScreen() when the center of the active client is
offscreen and was not previously on the active screen.

svn path=/trunk/KDE/kdebase/workspace/; revision=925362
2009-02-13 06:59:34 +00:00
Luboš Luňák
1297fe6daa Fix position of gravitated windows after a crash.
http://lists.kde.org/?l=kwin&m=123149700221501&w=2


svn path=/trunk/KDE/kdebase/workspace/; revision=925062
2009-02-12 10:01:40 +00:00
Luboš Luňák
1c2ba6ea17 I forgot to actually implement the resetCompositing() slot for the previous commit.
svn path=/trunk/KDE/kdebase/workspace/; revision=924759
2009-02-11 14:29:32 +00:00
Lucas Murray
5945dd1131 If an effect is triggered by an electric border "push" the cursor back
out of the triggering area and disallow a retrigger for 350ms. Prevents
accidental deactivation of effect when leaving the cursor in the
hotspot.

svn path=/trunk/KDE/kdebase/workspace/; revision=924111
2009-02-10 06:22:04 +00:00
Luboš Luňák
7249ca2cfb Do self-check immediatelly during compositing setup only when it's not KWin startup
at the same time (in other words, only when activating compositing using the kcm).
Currently selfcheck causes bad flicker (due to X mapping the overlay window
for too long?) which looks bad during KDE startup. With this patch, KDE startup
is without any flicker.


svn path=/trunk/KDE/kdebase/workspace/; revision=923842
2009-02-09 14:51:11 +00:00
Luboš Luňák
b50a8d352a Compress possible several reasons for resetting compositing.
svn path=/trunk/KDE/kdebase/workspace/; revision=923836
2009-02-09 14:37:07 +00:00
Luboš Luňák
4d82d2291e Don't needlessly setup compositing twice during startup.
Xrandr seems to like to send events about "changes" right
after application startup.


svn path=/trunk/KDE/kdebase/workspace/; revision=923829
2009-02-09 14:31:42 +00:00
Lucas Murray
81ffa5aec9 Raise electric border windows when an effect mouse input window is
created to allow effects to be toggled by active screen edges.

svn path=/trunk/KDE/kdebase/workspace/; revision=922121
2009-02-06 14:21:20 +00:00
Lucas Murray
752d5fa642 Extracted mouse polling out of the composite timer to allow effects to
detect mouse movement and modifier key changes even when KWin is idle.
As the track mouse effect requires polling to always be active disabling
it by default to prevent wasting CPU usage in the default install.

svn path=/trunk/KDE/kdebase/workspace/; revision=919711
2009-02-01 15:16:52 +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
5821e6f9d7 Reverted all code relating to automatic X crash detection with agreement
from David. Due to an elusive bug somewhere in kdelibs we have not been
able to find out how to fix the issues that some people were having.
There seems to be a race condition as I cannot reproduce at all, David
can reproduce sporadically and some reporters can always reproduce.

This commit attempts to also keep the code style changes that were made
at the same time as the original commit as well as some minor bug fixes
that were made between then and now. Hopefully I didn't miss anything.

We will be revisit this in KDE 4.3.

BUG: 177178

svn path=/trunk/KDE/kdebase/workspace/; revision=894182
2008-12-08 05:08:31 +00:00
David Nadlinger
d79ef83183 When modifying the compositing settings, save a backup of kwinrc to another file to be able to revert if the X server crashes while testing the new config.
Also fixed a little bug in kcmkwincompositing (dropdowns on the general tab were not updated correctly) and cleaned up the code a bit (removed a few unneeded function calls and stale connects).

See the conversation on the mailing list ("Patch for bug 174769", http://lists.kde.org/?l=kwin&m=122696916611602) for further information.

BUG 174769


svn path=/trunk/KDE/kdebase/workspace/; revision=888659
2008-11-25 01:42:30 +00:00
Laurent Montel
5535a9de5e Fix iterator
svn path=/trunk/KDE/kdebase/workspace/; revision=883047
2008-11-11 23:09:11 +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
1d2c54edcc Support for proper effect reconfiguration instead of reloading them.
Fixes e.g. the global animation combo not taking effect.


svn path=/trunk/KDE/kdebase/workspace/; revision=866903
2008-10-02 09:27:32 +00:00
Luboš Luňák
9ad12bc391 Add one more check for paints taking too much time, this time
also detect not-so-bad-but-still-slow paint times over a longer
period of time, i.e. the old check is for systems which are pathetically
slow, this one is for systems that are just slow. Possibly may need
tweaking for cases like high system load, but right now it seems
that e.g. a compilation running cannot trigger this check because
it cannot cause many long repaints in a row.


svn path=/trunk/KDE/kdebase/workspace/; revision=866636
2008-10-01 14:29:56 +00:00
Luboš Luňák
503bf3e767 Add a check that measures time needed for one compositing pass.
If three successive ones take more than 1 sec, suspend compositing,
as that very likely means the system is totally incapable of decent
compositing. Perhaps may need little tweaking.


svn path=/trunk/KDE/kdebase/workspace/; revision=861906
2008-09-17 13:42:12 +00:00
Luboš Luňák
8eedfa3456 Another attempt at self-check, this time done directly during setup
(so that it can fail immediately).


svn path=/trunk/KDE/kdebase/workspace/; revision=859960
2008-09-11 16:37:26 +00:00
Luboš Luňák
c6230db535 Stop the compositing timer when idle.
FEATURE: 155694


svn path=/trunk/KDE/kdebase/workspace/; revision=854913
2008-08-30 15:28:47 +00:00
Luboš Luňák
fd2e9b54cb Funny how awesome ideas are often so awfully simple. Test whether compositing
really works by simply trying to do it and test the result - create a small
testing window with known content, do the same with it like with normal
windows, grab the screen contents, compare with the original, doesn't match? -> fail.
It still would be nice to have something similar for performance.


svn path=/trunk/KDE/kdebase/workspace/; revision=854549
2008-08-29 19:02:36 +00:00
Luboš Luňák
19a9dd4095 Fix the flicker caused by unredirecting code - apparently setting the same
shape with X is not a no-op.


svn path=/trunk/KDE/kdebase/workspace/; revision=854107
2008-08-28 20:43:40 +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
09d81b7e87 Cache the result of XQueryTree().
svn path=/trunk/KDE/kdebase/workspace/; revision=851667
2008-08-24 10:35:45 +00:00