Commit graph

55 commits

Author SHA1 Message Date
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
Martin Gräßlin
533d57da60 Mark most ctors as explicit as reported by Krazy2 checker 2013-01-02 18:35:46 +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
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
fa5ab21002 Move kdecorations library into an own subdirectory
The KDecoration library lives in libkdecorations/ now.

Installation pathes are unchanged, so this does not influence 3rd party
decorations.

The changes in the KWin main directory are required due to incorrect
includes.
CCMAIL: kwin@kde.org
2011-02-19 10:01:31 +01: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
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
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
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
Laurent Montel
67f6750ab3 Remove not necessary include
svn path=/trunk/KDE/kdebase/workspace/; revision=656776
2007-04-22 11:14:24 +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
Andreas Hartmetz
ee217245fb Ported/compile-fixed some code in khotkeys and kwin (that was not fun)
Small changes in other places, removed some unnecessary #include <kkeydialog.h> where they showed up.

Related to this kdelibs commit:
KKeyDialog: Renamed to KShortcutsDialog
KKeyChooser: Renamed to KShortcutsEditor
KKeyButton: Replaced by KKeySequenceWidget and KShortcutWidget. KKeySequenceWidget uses modified code from KKeyButton.
KShortcutDialog: Removed

svn path=/trunk/KDE/kdebase/workspace/; revision=648582
2007-03-31 19:04:28 +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
Laurent Montel
5725624c8b #include <q...h> -> #include <Q...>
svn path=/trunk/KDE/kdebase/workspace/; revision=540496
2006-05-13 16:33:18 +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
Luboš Luňák
3fb4801635 Ignore requested position -> geometry.
svn path=/trunk/KDE/kdebase/kwin/; revision=444049
2005-08-08 14:27:03 +00:00
Luboš Luňák
512fb17a95 Forward port of #108961.
svn path=/trunk/KDE/kdebase/kwin/; revision=442363
2005-08-02 13:25:20 +00:00
Stephan Kulow
b464518b3c svn merge svn+ssh://coolo@svn.kde.org/home/kde/trunk/KDE/kdebase@438057
svn+ssh://coolo@svn.kde.org/home/kde/branches/work/kde4/kdebase
          .

I couldn't resolve one kicker conflict that results from different
development directions, so I rely on Aaron to sort it out - the file
is commited with conflicts

svn path=/trunk/KDE/kdebase/kwin/; revision=439627
2005-07-28 14:59:42 +00:00
Luboš Luňák
20f80af287 Make it possible to use the window-specific settings dialog
to also set some things only temporarily. E.g. in order
to set skiptaskbar flag on a window, it's just
Alt+F3/Advanced/Special Window Settings/Preferences ->
Apply Now for Skip taskbar, and turn on the checkbox.


svn path=/trunk/KDE/kdebase/kwin/; revision=423112
2005-06-07 15:31:15 +00:00
Luboš Luňák
07203ba5b6 Window-specific rules for dynamic windows shortcuts, so that it's
possible to always have certain shortcuts assigned to their windows
if such windows are open. Still few TODO items left, but let's consider
it enough for #44268 to be marked as done.
FEATURE: 44268

svn path=/trunk/kdebase/kwin/; revision=379444
2005-01-17 15:53:14 +00:00
Luboš Luňák
ded2f457b8 Workaround for xterm not coping well with being maximized to a geometry
that's not exact multiple of its resize increments. Selecting obeying
strict geometry in window-specific settings makes KWin avoid this.
Maximization then doesn't work very well indeed, but one cannot please
everybody, and the bug is in xterm after all.
BUG: 94183

svn path=/trunk/kdebase/kwin/; revision=379401
2005-01-17 13:35:48 +00:00
Thomas Lübking
8ad47028f6 Added composite (translucency/shadows) support
svn path=/trunk/kdebase/kwin/; revision=378790
2005-01-15 17:07:48 +00:00
Luboš Luňák
1a274e1041 Don't force the settings, only apply them initially.
svn path=/trunk/kdebase/kwin/; revision=350787
2004-10-01 12:58:50 +00:00
Luboš Luňák
00bdcc2e0d #84605 - make the Alt+F3/Advanced/Special window settings option find
automatically a match entry and create a new one if none is found.
CCMAIL: 84605-done@bugs.kde.org

svn path=/trunk/kdebase/kwin/; revision=333894
2004-07-29 17:08:25 +00:00
Luboš Luňák
e0ebeb3c26 Make it possible to do a substring match, and possibly others in the future.
svn path=/trunk/kdebase/kwin/; revision=323530
2004-06-25 11:28:17 +00:00
Luboš Luňák
36b64e3897 GUI for rules (=window specific settings). Have fun figuring out how it
works, because I haven't written any kind of docs for it yet, and
the most important button doesn't work yet either (yes, that one that
has it written on it). I just hope the GUI doesn't suck too much, because
I'm really bad at such things.

svn path=/trunk/kdebase/kwin/; revision=322524
2004-06-21 16:25:24 +00:00
Luboš Luňák
c6a91d80ba KWin rules - obey/disobey given position.
svn path=/trunk/kdebase/kwin/; revision=322443
2004-06-21 12:38:40 +00:00
Frerich Raabe
9f6d0202f0 - gcc 2.95.4 chokes if you static_cast something to an enum :-(
svn path=/trunk/kdebase/kwin/; revision=321803
2004-06-18 22:06:04 +00:00
Luboš Luňák
094befa1de Make it possible to have several rules matching one window.
svn path=/trunk/kdebase/kwin/; revision=321637
2004-06-18 08:57:42 +00:00
Luboš Luňák
7e35926c37 Make no focus stealing prevention really do nothing, and change
the rule for it to specify new level instead of adjustment.

svn path=/trunk/kdebase/kwin/; revision=319664
2004-06-11 15:12:07 +00:00
Luboš Luňák
0f972d789f Instead of snatching the window temporarily from kwin simply tell kwin
what to do with it. I've never liked this hack much, and this should
also take care of #49375, and should make sure kstart options will
have higher priority than settings configured in kwin.

svn path=/trunk/kdebase/kwin/; revision=319662
2004-06-11 15:10:09 +00:00
Luboš Luňák
6e34bc5e8a KWin rules for making windows noncloseable, and for changing moveresize
mode.

svn path=/trunk/kdebase/kwin/; revision=318994
2004-06-09 08:33:53 +00:00
Luboš Luňák
2d336eb6ac KWin rule for accepting/not accepting input focus.
svn path=/trunk/kdebase/kwin/; revision=318992
2004-06-09 08:30:06 +00:00
Luboš Luňák
76f21da02b KWin rule for adjusting focus stealing prevention level.
svn path=/trunk/kdebase/kwin/; revision=318991
2004-06-09 08:29:35 +00:00
Luboš Luňák
03bdeb94b0 KWin rules setting maximizevert, maximizehoriz, minimize, shade, skiptaskbar,
skippager, fullscreen, noborder.

svn path=/trunk/kdebase/kwin/; revision=317377
2004-06-03 14:09:45 +00:00
Luboš Luňák
7eadd6463f KWin rules - position and size.
Forcing position doesn't work yet, and forcing size needs more testing.

svn path=/trunk/kdebase/kwin/; revision=316414
2004-05-31 14:25:25 +00:00
Luboš Luňák
a114e9acc3 KWin rules - override minsize/maxsize.
svn path=/trunk/kdebase/kwin/; revision=316413
2004-05-31 14:15:33 +00:00