Commit Graph

161 Commits

Author SHA1 Message Date
Michael Stapelberg fcc5ce516b Bugfix: Don’t free xinerama-reply if it is NULL, implement FREE()-macro (Thanks Igor) 2009-03-30 08:27:53 +02:00
Michael Stapelberg a8478efa34 Bugfix: Correctly filter out the numlock state bit (doesn’t get cleared for some reason)
This fixes ticket #14
2009-03-27 15:24:52 +01:00
Michael Stapelberg 9077831ed3 Bugfix: When entering a stack window with the mouse, set the focus to the active client
Fixes ticket #17
2009-03-26 23:00:26 +01:00
Michael Stapelberg e0f7e253ff Bugfix: Fix memory leak 2009-03-20 17:31:34 +01:00
Michael Stapelberg eb2ceb95bf Cleanup makefiles, add version to i3 -v and i3 startup 2009-03-15 23:15:16 +01:00
Michael Stapelberg 21f7b7a724 Disable horizontal resizing for the release version, it still has bugs 2009-03-15 21:31:35 +01:00
Michael Stapelberg 3d260f8e50 Bugfix: re-decorate old client when switching screens 2009-03-15 21:13:15 +01:00
Michael Stapelberg 74465a562a Bugfix: Only actively change focus if this is the current container 2009-03-15 20:52:43 +01:00
Michael Stapelberg 3a994e4bf7 Implement clicking on the bar to switch workspaces 2009-03-15 17:49:25 +01:00
Michael Stapelberg 76effaf29a Bugfix: Fix rounding problems when positioning proportional windows 2009-03-15 17:35:16 +01:00
Michael Stapelberg c02dd93bcc Bugfix: Query WM_NORMAL_HINTS when managing a window to handle proportional hints which were set before mapping 2009-03-15 12:24:49 +01:00
Michael Stapelberg cb9c7078be Implement kill-command to kill the current window, document it 2009-03-14 22:09:36 +01:00
Michael Stapelberg cc0b060628 Implement exit command, document it in manpage, add it to defaultconfig (Mod1+Shift+e) 2009-03-14 21:31:22 +01:00
Michael Stapelberg 80e2bf708d Send configure notify after putting a client into fullscreen mode, log at a central place 2009-03-14 17:37:11 +01:00
Michael Stapelberg 4ad1edc5eb Remove unused variable (fixes warning) 2009-03-13 11:20:21 +01:00
Michael Stapelberg e3085b4f75 Fix fullscreen for xpdf (at least on debian, with proper _NET_WM_STATE hints)
xpdf sets the _NET_WM_STATE before actually mapping the window. i3 only checked
for changes of this hint, but not if it is already set when intially managing
the window.

Note that you need to patch your xpdf to support _NET_WM_STATE, because, while
only being reported at 2004, upstream still did not merge the patch *grrr*
See this debian bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=247602
Or directly download the patch from:
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=61;filename=31_fullscreen.dpatch;att=1;bug=247602
2009-03-13 04:51:17 +01:00
Michael Stapelberg 9c755dcb0d Fix compilation 2009-03-13 04:51:09 +01:00
Michael Stapelberg 14834c3530 Fake more configure notifies (makes xpdf work better) 2009-03-13 00:39:16 +01:00
Michael Stapelberg 755709c86d Bugfix: Completely ignore legacy hints as soon as the client uses _NET_WM_NAME 2009-03-12 16:44:44 +01:00
Michael Stapelberg e1252b51da Move i3lock in its own repository 2009-03-11 22:21:50 +01:00
Michael Stapelberg cc2c63b860 Handle legacy window titles by rendering them not unicode-compatible. 2009-03-11 21:31:54 +01:00
Michael Stapelberg 17bcdd8b0f Implement cleaning up the list of ignored events 2009-03-11 20:06:30 +01:00
Michael Stapelberg 12970211c4 Fix misnomer (window_type_handler → handle_window_type), resolve TODO 2009-03-11 19:39:32 +01:00
Michael Stapelberg 969d6f202e Move i3lock to src/i3lock, import dmenu-3.9 as i3menu 2009-03-11 19:03:24 +01:00
Michael Stapelberg c0aa9cac61 Implement moving containers, implement moving windows to the top if top-most, change config to use Mod3 2009-03-11 18:56:31 +01:00
Michael Stapelberg 49b56166dc Implement moving clients to the left if they are leftmost 2009-03-11 01:55:10 +01:00
Michael Stapelberg 9c0d5b6e5e Bugfix: Redecorate the last focused window of the container we are switching into 2009-03-11 00:56:39 +01:00
Michael Stapelberg ec290cbfa9 Bugfix: Don’t handle mouse click events inside the titlebar 2009-03-11 00:45:49 +01:00
Michael Stapelberg 38c8541807 Bugfix: Change the event mask to ignore enter notifies when rendering the layout and changing workspaces 2009-03-11 00:20:56 +01:00
Michael Stapelberg 408b2bdb39 Bugfix: Eliminate race condition, fix dock windows
There was a race condition when mapping a window and not setting the event mask
before. Therefore, the ReparentNotify and (more important) the UnmapNotify generated
by reparenting were not received, thus leaving the awaiting_useless_unmap variable
of the client "true". To just make it work, in previous commits the DestroyNotify
handler was introduced. Fortunately, with fixing this race condition by first
setting the event mask and mapping the window afterwards, we can remove this handler.

As for the dock windows, there were quite some occurences were client->container
was used without checking if the client is inside a container at all.

Furthermore, the client’s strut containing the space to reserve at the screen edge
is now checked and the desired height is set to the window’s height if the strut
contains 0 or if no strut was specified at all.
2009-03-10 20:56:25 +01:00
Michael Stapelberg 434345aa30 Ignore notify events which are not in mode XCB_NOTIFY_MODE_NORMAL 2009-03-10 11:26:52 +01:00
Michael Stapelberg 441f406a4b Fix warning (typecast) 2009-03-10 09:51:00 +01:00
Michael Stapelberg c025678177 Major change: Redirect events instead of handle the notifies.
By specifying XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, the window manager
will get map request events instead of map notify events, and therefore
can act sooner (the window won’t be positioned on the screen and moved
afterwards).

Furthermore, this fixes some problems with GIMP/VLC (and probably others)
which caused endless loops.

Also, events which should be ignored are now saved in a queue rather than
saving just the last event. This should eliminate race conditions.

Note that there is a new FIXME in src/handlers.c. Some windows generate
unmap notify events when reparenting while others don’t. We need to
understand, document and implement a more correct way to handle this.
2009-03-10 00:51:15 +01:00
Michael Stapelberg d38636439c Fix warning 2009-03-09 17:50:00 +01:00
Michael Stapelberg b800408a97 Bugfix: Handle all events when dragging to resize, correctly set OVERRIDE_REDIRECT 2009-03-09 08:50:33 +01:00
Michael Stapelberg 3a34cfc603 Bugfix: Draw bar at the correct position, handle expose events for bars 2009-03-09 08:24:05 +01:00
Michael Stapelberg 00f08cba75 Bugfix: Correctly free containers, the bug was not freeing when not moving 2009-03-09 08:14:00 +01:00
Michael Stapelberg 71993c9b48 Implement wrapping left/right/up/down across screens 2009-03-09 07:39:19 +01:00
Michael Stapelberg 38d903aea5 Update comment 2009-03-09 07:18:04 +01:00
Michael Stapelberg cc78664f9d Bugfix: Use memcmp() instead of strcmp(), use new_len * 2 to check all bytes 2009-03-09 07:02:47 +01:00
Michael Stapelberg 2cf3a9dd96 Bugfix: Correctly free containers when shrinking the table 2009-03-09 06:49:11 +01:00
Michael Stapelberg 65595c61a8 Bugfix: Don’t strcmp() if client->name == NULL 2009-03-09 06:41:04 +01:00
Michael Stapelberg 6df039c3b5 Convert window title to UCS-2 when updating it, don’t update it if it didn’t change 2009-03-09 06:26:32 +01:00
Michael Stapelberg 4f8e704017 s/atomar/atomic 2009-03-08 21:01:06 +01:00
Michael Stapelberg cefc1dabac Bugfix: Use a new variable called new_position and initialize it correctly when resizing 2009-03-08 20:59:49 +01:00
Michael Stapelberg 71221baca0 Fix race condition when updating client->name 2009-03-08 20:04:01 +01:00
Michael Stapelberg 9e74378dd0 Bugfix: Use _NET_WM_NAME (UTF-8) rather than WM_NAME (COMPOUND_TEXT). Only render client titles, if they are set 2009-03-08 19:07:33 +01:00
Michael Stapelberg 4e12c9b39c Fix the warning on SUS-compatible systems (char**) and on NetBSD (const char**) 2009-03-08 17:47:45 +01:00
Michael Stapelberg f85990b27a Fix warnings, update DEPENDS, update Makefile for NetBSD 2009-03-08 17:30:17 +01:00
Michael Stapelberg 6f630a3335 Implement UTF-8-clean window titles 2009-03-08 00:49:11 +01:00