Commit Graph

788 Commits

Author SHA1 Message Date
Julien Danjou 46ffccd8e2 root: fix fake_input code
This code actually belongs to 'root' since it does not send events to a
client but simply to X.
The window argument is only used in motion event, so fix that also.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-12 01:55:37 +02:00
Maarten Maathuis f6e4b76845 client: fix luadoc typo, minimize should be minimized
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-11 19:04:28 +02:00
Uli Schlachter 2a6d5d207d client_stack(): Only stack windows once per mainloop
I was creating 2000 wiboxes in a loop (don't ask) and creating them took
forever. According to callgrind, there were about 2 million calls to
xcb_configure_window() and most (if not all) of them were from client_stack().
Awesome spent 70% of its cpu time in these client_stack() calls.

client_stack() is O(N^2) on the number of clients (it walks the list of clients
itself twice and each call to client_stack_above() walks the list too) and O(N)
on the number of wiboxes (it walks the wibox list twice). So obviously calls to
it should be rare.

This patch makes client_stack() only set a flag which is later checked. This
should reduce the number of restacks to the bare minimum. With this patch,
neither xcb_configure_window() nor anything else client_stack() related shows
up as having a lot of calls or using much cpu time.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-10 18:15:48 +02:00
Uli Schlachter 95457c5ab7 Move the definition of globalconf into a header file
Pretty much every single source file needs this struct, so it makes sense to
define it in a common header instead of in every single .c file.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-10 16:32:42 +02:00
Uli Schlachter a076806ce0 Rename LAYER_OUTOFSPACE to LAYER_COUNT
The name LAYER_OUTOFSPACE suggests that this is a real layer on which windows
can be put, but it's only used as an integer which describes the maximum
allowed / used layer.
Therefor, renaming it to LAYER_COUNT and adding a comment which describes this
might make sense.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-10 13:35:26 +02:00
Julien Danjou e53c77540d client: move window function into window.c
This should light client.c a bit.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-07 15:58:09 +02:00
Mariusz Ceier 904502552f Focus events handlers
- We are tracking focus, using FocusIn/FocusOut events handlers, so user
  should never be confused about which client has focus
- window_setfocus function generates focus change requests to the X server
- client_focus uses window_setfocus to set input focus
- revert_to when setting input focus set to Parent, compliant with
  ICCCM convention ([1])
- DEBUG flag for those who want to debug focus handlers

Most of the changes, are compliant with X11 handbook ([0]), but some
where obtained experimentally.

Kudos to Maarten Maathuis who helped a lot with this.

[0]
http://cgit.freedesktop.org/xorg/doc/xorg-docs/plain/hardcopy/X11/xlib.PS.gz

[1] http://tronche.com/gui/x/icccm/sec-4.html#s-4.2.7

Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Mariusz Ceier <mceier@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-07 15:42:25 +02:00
Julien Danjou 4d6bf949a8 Revert "event: add FocusOut handler"
This reverts commit 31ba962065.
2009-04-06 13:27:53 +02:00
Maarten Maathuis 31ba962065 event: add FocusOut handler
- I don't see why we should guess about what we recieved and whatnot.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-04 16:32:46 +02:00
Julien Danjou 0d6d6c4fa7 client: store class and instance
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-04 13:54:51 +02:00
Julien Danjou eaec928b8c client: remove useless icon_path
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-04-04 13:02:30 +02:00
Maarten Maathuis 264a81f3fb client: handle struts (a lot) better
- WINDOW_TYPE_DOCK are chosen first.
- Top/Bottom take precedence over Left/Right.
- Struts are automatically updated.
- Automatically avoid overlap with other struts or wibox'es.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-31 09:17:36 +02:00
Alex Cornejo 106e6ed5ab Styling inconsistencies
Cheers,

Alex

From b5816ec55073507d4527ad3a77eae1878adb30d3 Mon Sep 17 00:00:00 2001
From: Alex Cornejo <acornejo@gmail.com>
Date: Sun, 29 Mar 2009 14:24:27 -0400
Subject: [PATCH] Fixed some styling issues.

Noticed in the latest pull that a commit introduced a lot of styling
inconsistencies, decided to remove those and others found by a simple
grep.

Signed-off-by: Alex Cornejo <acornejo@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-30 12:53:12 +02:00
Maarten Maathuis 9aeda90738 client: add a "struts" property
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-28 14:40:06 +01:00
Maarten Maathuis bf0329d8a3 client: fix typo
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-28 14:38:20 +01:00
Maarten Maathuis cf16379778 client: allow special non-transient windows to be !above
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-28 14:38:15 +01:00
Maarten Maathuis 68970a3f56 titlebar: redo the handling "a bit"
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-28 14:36:35 +01:00
Julien Danjou f0bb0b374b client: export urgent flag manipulation
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-20 08:04:31 +01:00
Julien Danjou 6430738f17 client: stop using otable
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-14 13:47:50 +01:00
Julien Danjou 84ee8f1f92 event: implements Bob Marley version 2
Version 1 was supposed to store somehow the mouse coordinates to drop
spurious EnterNotify.

Now, we use a simpler way: we just tell the X server we do not want to
receive this events while we are arranging, since we would get spurious
ones.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-12 11:49:58 +01:00
Julien Danjou 17e2d9e58f client: remove _AWESOME_TAGS property
We use EWMH hints.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-12 11:49:58 +01:00
Julien Danjou cc2b8f4e89 client: remove useless _AWESOME_FULLSCREEN
We use EWMH hints, it's enough.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-12 11:49:58 +01:00
Julien Danjou 8745d691fe buttons: change grabbing method
We stop grabbing buttons on root windows. We select button press and
release events, and then we check that we have a bindings for them.
This allow to simply grab buttons on client once, and not redo such
things on arrange or mouse-over-window changes.

Most window managers do like this, anyway.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-12 11:49:58 +01:00
Julien Danjou 5154cfc19f remove deprecated functions
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-12 11:49:58 +01:00
Julien Danjou 9b654095ec client: add Globally Active Input Model (GAIM)
with small fixes, changes:
- client_focus handles case when c==NULL
- don't focus on already focused client

- added window_takefocus function, that sends WM_TAKE_FOCUS client
  message. It is needed by GAIM and Locally Active Input Model.
- moved invocation of lua focus hook from client_focus to
  client_focus_hook function.

- client_focus has one additional paremeter, sendmessage.
  It is used in FocusIn event handler, to disable sending SetInputFocus
  and WM_TAKE_FOCUS messages ( to avoid infinite loop )

Signed-off-by: Mariusz Ceier <mceier@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-03 17:24:40 +01:00
Julien Danjou 9db9abd02a client: remove _AWESOME_FLOATING
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-26 12:35:46 +01:00
Maarten Maathuis c675bf64ec client: fix client_setborder
- Don't know why I didn't do this correctly in the first place :-|

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-20 09:48:34 +01:00
Julien Danjou f711503d7b client: call unfocus hook when we changed focused client (FS#454)
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-19 16:27:06 +01:00
Julien Danjou a95fc407b5 client: add .id field
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-18 16:53:42 +01:00
Maarten Maathuis 4f447bcbdc Revert "client: remove a few useless client_need_arrange()."
This reverts commit c9caf05c2d.

- They were not so useless after all, the reason is that before or after setting the new state client_need_arrange() is a no-op.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-17 10:39:43 +01:00
Maarten Maathuis c9caf05c2d client: remove a few useless client_need_arrange().
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-16 10:34:53 +01:00
Julien Danjou ada983d08e ewmh: add missing window types
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-13 11:25:38 +01:00
Gregor Best 050a6bbb61 client: add client_seturgent() and remove urgent hint on focus
According to EWMH, the window manager is responsible for removing the
urgent state of a client. Also, this commit adds a new
client_seturgent(client_t *, bool) function to set the urgent state if
needed.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-11 19:04:09 +01:00
Mariusz Ceier 01eff69bf4 client: fix focus subsystem
We don't need to unfocus currently selected client.
Added WM_TAKE_FOCUS atom, so we can implement correct ICCCM,
focus behavior, in relation to Input Models ( sections 4.1.7 [1],
4.2.7 [2] ).
Currently correctly implemented are, "No Input", and "Passive"
models, and additionally works "Locally Active".
To test focus-in and focus-out events I used program from [3].

[1] http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.7
[2] http://tronche.com/gui/x/icccm/sec-4.html#s-4.2.7
[3] http://mail.gnome.org/archives/gtk-devel-list/2001-November/msg00334.html

Signed-off-by: Mariusz Ceier <mceier@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-11 18:54:02 +01:00
Maarten Maathuis fdee06fe31 client: fix titlebar stacking
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-11 01:56:57 +01:00
Maarten Maathuis 8e58460109 client: add above and below to capi + related fixes
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-09 12:30:19 +01:00
Maarten Maathuis bd6e568083 event: fix configurerequest
- We have to be careful with geometry around protocol code.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-08 14:10:17 +01:00
Maarten Maathuis 0626d42396 client: change border handling slightly + remove some old cruft
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-08 14:07:18 +01:00
Julien Danjou 21e6db0049 client: reset transient_for on unmanage
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-08 14:00:30 +01:00
Maarten Maathuis 41b892291d client: implement client struts in the capi.
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-08 13:21:20 +01:00
Julien Danjou 2c6dc1048d titlebar: correctly ban/unban (FS#443)
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-05 17:55:59 +01:00
Julien Danjou a13f3fe553 client: handle tags assignment in awful (FS#441)
This also deactivate group management. This can be done in Lua now.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-03 12:20:17 +01:00
Maarten Maathuis b8a371864b client, titlebar: fix some issues involving titlbars and dialogs.
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-03 10:32:00 +01:00
Julien Danjou 6c963a6eed client: check tags even after transient/group tag copy (FS#434)
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-03 10:24:04 +01:00
Julien Danjou 2a2ce6e83e client: switch to xcb-icccm 0.3.3
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-01-31 16:03:06 +01:00
Julien Danjou b878e1491f client: reset height and width on unbanning
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-01-30 15:07:49 +01:00
Julien Danjou 9e89753018 client: change stacking order
We had:
ontop clients -> ontop wiboxes -> fs clients
Now:
fs clients -> ontop clients -> ontop wiboxes

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-01-30 12:46:37 +01:00
Julien Danjou f82ac1972f client: make `ontop' windows under fullscreen
`ontop' wiboxes will also be on top of `ontop' clients.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-01-30 10:47:54 +01:00
Julien Danjou d08b04ce9d client: move client to screen correctly if belonging to a group
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-01-23 15:34:00 +01:00
Julien Danjou 33d3aeb7d0 client: do not honor groups if physical screen are different
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-01-23 11:11:26 +01:00