Commit graph

100 commits

Author SHA1 Message Date
Martin Gräßlin
65ec86113a Split out Rules related code from Workspace into class RuleBook
Workspace is hardly interacting with Rules and all the Rules related code
is already in rules.cpp. This highly qualifies to move all the code out
of Workspace and improve the names.

REVIEW: 110207
2013-04-30 07:52:08 +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
158d060b5f turn "ignore geometry" forcerule into a setrule
and btw. replace legacy "ignoreposition" by "ignoregeometry"

this will allow to use "apply initially" as "force" used to act
(ignore position on placement) and "force" to prevent clients
from reconfiguring themselves (to not break a tabgroup or to just
not be annoying)

BUG: 311720
CCBUG: 252314
REVIEW: 109691
FIXED-IN: 4.11
2013-03-28 20:31:08 +01:00
Martin Gräßlin
5cd223f051 Improved resolving whether a window is on local machine
Most windows use the hostname in WM_CLIENT_MACHINE, but there are windows
using the FQDN (for example libreoffice). So instead of "foo" it is
"foo.local.net" or similar. The logic so far has been unable to properly
determine whether windows with FQDN are on the local system.

In order to solve this problem the handling is split out into an own
class which stores the information of hostname and whether it is a local
machine. This is to not query multiple times. To determine whether the
Client is on the local system getaddrinfo is used for the own hostname
and the FQDN provided in WM_CLIENT_MACHINE. If one of the queried
names matches, we know that it is on the local machine. The old logic to
compare the hostname is still used and getaddrinfo is only a fallback in
case hostname does not match.

The problem with getaddrinfo is, that it accesses the network and by that
could block. To circumvent this problem the calls are moved into threads
by using QtConcurrent::run.

Obviously this brings disadvantages. When trying to resolve whether a
Client is on the local machine and a FQDN is used, the information is
initially wrong. The new ClientMachine class emits a signal when the
information that the system is local becomes available, but for some
things this is just too late:
* window rules are already gathered
* Session Management has already taken place

In both cases this is an acceptable loss. For window rules it just needs
a proper matching of the machine in case of localhost (remote hosts are
not affected). And the case of session management is very academic as it
is unlikely that a restoring session contains remote windows.

BUG: 308391
FIXED-IN: 4.11
REVIEW: 108235
2013-01-21 16:00:49 +01:00
Marco Martin
36ed622a61 use a rules file dependednt from the kwin name
kwinacriverulesrc vs kwinrulesrc
2012-11-03 22:09:07 +01:00
Thomas Lübking
850c1e6f0d add screen rule 2012-09-19 20:21:43 +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
Ivan Čukić
0d60a7049d Adds activity window rules to KWin
- adds the kcm rule option to set the activity - one or all option like
  for virtual desktops
- makes the windows obey the rule
- makes the rule enforced even when the user tries to change the
  window's activity via the alt+f3 menu

REVIEW:104972
2012-05-17 16:32:06 +02:00
Thomas Lübking
033ae96f89 selective rule remembering
REVIEW: 103875
2012-02-09 17:34:08 +01:00
Thomas Lübking
9ec32d5942 4.7 backportable rules ui fixes
remove uncertain "extra role" match
fix shortcut editor s/s connection

REVIEW: 7001
2011-10-05 23:54:06 +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
31278d570e add rule/property based composite blocking 2011-04-04 01:59:52 +02:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Kevin Ottens
ff61f40d8d Don't rely on the kdgstream typedef which is deprecated. Use QDebug
directly.

svn path=/trunk/KDE/kdebase/workspace/; revision=1190379
2010-10-27 14:16:56 +00:00
Martin Gräßlin
fa7f160cb3 Window specific setting to skip window switchers (tabbox, present windows, desktop grid).
FEATURE: 171192
CCBUG: 179723

svn path=/trunk/KDE/kdebase/workspace/; revision=1122404
2010-05-03 20:04:44 +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
Lucas Murray
d7b1e5fc53 Added window rule version of opening window tabs in the background.
svn path=/trunk/KDE/kdebase/workspace/; revision=1050444
2009-11-17 10:41:32 +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
e096c60502 Allow the autogrouping option to be enabled/disabled on a
per-application level by using window rules.

svn path=/trunk/KDE/kdebase/workspace/; revision=1050000
2009-11-16 11:26:37 +00:00
Lucas Murray
3dc41fb062 Fix double->int conversions to prevent incorrect rounding of window
opacity at KWin start and window focus change.
BUG: 209274

svn path=/trunk/KDE/kdebase/workspace/; revision=1030828
2009-10-03 09:11:05 +00:00
Thomas Lübking
46def0304e BUG: 167138
make opacity rules actually functional

svn path=/trunk/KDE/kdebase/workspace/; revision=1002997
2009-07-27 13:30:08 +00:00
Laurent Montel
5535a9de5e Fix iterator
svn path=/trunk/KDE/kdebase/workspace/; revision=883047
2008-11-11 23:09:11 +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
Kevin Ottens
dde6b49658 Don't use the global config for the rules config.
kdeglobals is not supposed to store such rules, and this way
we don't empty kdeglobals when KWin quits.

Lubos: Ossi confirmed me it was the right move in the way we
use KConfig here, so I committed directly. In case of problem
just tell me.

CCMAIL: l.lunak@kde.org

svn path=/trunk/KDE/kdebase/workspace/; revision=769617
2008-02-01 17:50:18 +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
aba180b466 kdebug no longer relies on NDEBUG
svn path=/trunk/KDE/kdebase/workspace/; revision=741888
2007-11-26 17:17:45 +00:00
Andreas Pakulat
39e322fc83 Merge the KConfig branch. This are the 3 main modules (+kdeadmin), which are
needed now because friday is the last BC day. The rest of the modules will
follow as fast as my laptop allows.

svn path=/trunk/KDE/kdebase/workspace/; revision=721704
2007-10-05 22:21:25 +00:00
Laurent Montel
994c800d79 Adapt to new KWarning/kFatal/kDebug api
svn path=/trunk/KDE/kdebase/workspace/; revision=695877
2007-08-03 06:59:24 +00:00
Luboš Luňák
6b5e03ac7d translate kwin's rules files
svn path=/trunk/KDE/kdebase/workspace/; revision=662888
2007-05-09 13:49:29 +00:00
Luboš Luňák
932444eeef Merging from old trunk:
r645397 | lunakl | 2007-03-22 15:27:04 +0100 (Thu, 22 Mar 2007) | 4 lines

Suspend updating of window-specific settings during shutdown,
so that KWin doesn't have to be killed as the first one during shutdown.


svn path=/trunk/KDE/kdebase/workspace/; revision=659567
2007-04-30 12:24:10 +00:00
Luboš Luňák
f52b8e48cd branches/work/kwin_composite becomes new trunk kwin.
svn path=/trunk/KDE/kdebase/workspace/; revision=659202
2007-04-29 17:35:43 +00:00
Luboš Luňák
2b7e1f4993 Remove kwin, kwin_composite will become new trunk kwin, missing merges
from trunk will be merged in.


svn path=/trunk/KDE/kdebase/workspace/; revision=659200
2007-04-29 17:34:49 +00:00
Luboš Luňák
2c928221a4 namespace KWinInternal -> KWin - shorter typing of names in gdb, yay
svn path=/trunk/KDE/kdebase/workspace/; revision=650773
2007-04-05 12:12:10 +00:00
Luboš Luňák
e3b865cd5f namespace KWinInternal -> KWin - shorter typing of names in gdb, yay
svn path=/branches/work/kwin_composite/; revision=650770
2007-04-05 12:07:35 +00:00
Luboš Luňák
082c4e95e3 Suspend updating of window-specific settings during shutdown,
so that KWin doesn't have to be killed as the first one during shutdown.


svn path=/trunk/KDE/kdebase/workspace/; revision=645397
2007-03-22 14:27:04 +00:00
Stephan Kulow
ab1fe691d8 merged kconfiggroup_port branch
svn path=/trunk/KDE/kdebase/workspace/; revision=635490
2007-02-20 07:00:30 +00:00
Dirk Mueller
6c224134db porting simplifications regarding KConfig::readEntry
svn path=/branches/work/kwin_composite/; revision=632199
2007-02-10 09:12:35 +00:00
Jaison Lee
e4d66a5a4d KTempFile->KTemporaryFile
svn path=/trunk/KDE/kdebase/workspace/; revision=591082
2006-10-01 17:24:38 +00:00
Luboš Luňák
f4f07d4fd3 Remove kompmgr-related code except for the generic parts like
the slider in Alt+F3.


svn path=/branches/work/kwin_composite/; revision=558258
2006-07-04 23:30:05 +00:00
Laurent Montel
7f7ce52d78 #include <q...h> -> #include <Q...>
svn path=/trunk/KDE/kdebase/workspace/; revision=539617
2006-05-11 08:04:23 +00:00
Dirk Mueller
84aa519239 stop crashing all the time
svn path=/trunk/KDE/kdebase/workspace/; revision=534215
2006-04-26 16:13:08 +00:00
Thorsten Roeder
7277c13bf8 unbreak compilation with gcc-3.3. As stated on k-c-d gcc-3.3 should be supported for now.
svn path=/trunk/KDE/kdebase/workspace/; revision=529391
2006-04-13 10:17:08 +00:00
Tobias Koenig
848bc14335 deprecated--
svn path=/trunk/KDE/kdebase/workspace/; revision=529106
2006-04-12 15:13:31 +00:00
Thorsten Roeder
98fa3320c5 deprecated--
basically:
QRegExp::search() --> QRegExp::indexIn()
QString::find() --> QString::indexOf()
QString::findRev() --> QString::lastIndexOf()
QString::lower() --> QString::toLower()
QString::upper() --> QString::toUpper()
QString::setLength() --> QString::resize()
QByteArray::find() --> QByteArray::indexOf()
QByteArray::findRev() --> QByteArray::lastIndexof()
QTimer::start(ms,sShot) --> {QTimer::setSingleShot() ; QTimer::start()}
QList::remove() --> QList::removeAll()
iterator QList::remove() --> iterator QList::erase()
QComboBox::text() --> QComboBox::itemText()
QByteArray::upper() --> QByteArray::toUpper()
QByteArray::lower() --> QByteArray::toLower()
QString::contains() --> QString::contains()
QEvent::accept(bool) --> QEvent::setAccepted(bool)


svn path=/trunk/KDE/kdebase/workspace/; revision=528719
2006-04-11 17:12:05 +00:00
Laurent Montel
c73394f756 Deprecated--
svn path=/trunk/KDE/kdebase/workspace/; revision=516258
2006-03-06 13:11:58 +00:00
Allen Winter
441523a689 Replace obsolete QMAX() and QMIN() with qMax() and qMin().
svn path=/trunk/KDE/kdebase/workspace/; revision=510739
2006-02-17 21:54:55 +00:00
Laurent Montel
591b9dae7f deprecated--
svn path=/trunk/KDE/kdebase/workspace/; revision=508045
2006-02-10 15:55:01 +00:00
Luboš Luňák
3bee4bff66 Make it possible add new default window rules that will
be added to user's rules.
Add default rules that turn off focus stealing prevention
for Mozilla family apps and OOo (since they can't handle opening
a window from second instance with FSP active).
When writing groups to kwinrulesrc delete old unused groups first.


svn path=/trunk/KDE/kdebase/workspace/; revision=506472
2006-02-06 20:44:10 +00:00
Laurent Montel
0fa10f318d Deprecated--
svn path=/trunk/KDE/kdebase/workspace/; revision=506323
2006-02-06 14:47:18 +00:00