Commit Graph

4548 Commits

Author SHA1 Message Date
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
ae5814550c Remove that stupid XBell() which gets triggered falsely when resuming suspend to RAM 2009-03-10 09:46:17 +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
3f482bd3b3 Make i3lock fork(), use white color and disable DPMS
The idea of fork()ing is to allow for aliases which first lock the screen,
then suspend.

White color and no DPMS is better than black color because you can tell the
difference between your notebook failed to suspend and it being locked.
2009-03-09 18:20:15 +01:00
Michael Stapelberg
2a1e9a6ea4 Import slock-0.9 as i3lock 2009-03-09 18:15:38 +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
253ba10bfb Use -idirafter which is the same as -I but first looks at the standard system headers
As iconv(3) is in NetBSD’s libc but the GNU version can be installed to /usr/pkg, searching
/usr/pkg/include before /usr/include (standard behaviour with -I) is not a good idea.
2009-03-08 20:04:33 +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
b51604bde6 Update default config/manpage 2009-03-08 00:51:38 +01:00
Michael Stapelberg
6f630a3335 Implement UTF-8-clean window titles 2009-03-08 00:49:11 +01:00
Michael Stapelberg
4dd1a7e181 More work on hacking-howto 2009-03-07 17:02:17 +01:00
Michael Stapelberg
d2f663e1a8 Some more work on docs/hacking-howto 2009-03-07 06:24:31 +01:00
Michael Stapelberg
35c04b448a Don’t start a terminal on startup 2009-03-07 05:50:19 +01:00
Michael Stapelberg
1f3ce94027 Bugfix: Correctly place new windows while other windows are in fullscreen mode 2009-03-07 05:49:13 +01:00
Michael Stapelberg
6abcc5f656 Fix some bugs found by using raster’s wm_torture 2009-03-07 02:44:46 +01:00
Michael Stapelberg
7f17edb4c1 Add how to hack guide, first version 2009-03-07 00:50:18 +01:00
Michael Stapelberg
a411ed24cb Bugfix: Correctly check for empty containers and unmap the stack_win 2009-03-06 19:08:59 +01:00
Michael Stapelberg
017a0c0d08 Don’t set focus outside of the current container 2009-03-06 17:13:20 +01:00
Michael Stapelberg
c04baeeea2 Bugfix: Should be workspace 10 not 0 in moving aswell 2009-03-06 17:08:01 +01:00
Michael Stapelberg
f8007a60b3 Bugfix: Should be workspace 10 not 0 2009-03-06 17:06:33 +01:00
Michael Stapelberg
97f23f549b Bugfix: decorate_window() needs a flush of course 2009-03-06 17:02:43 +01:00
Michael Stapelberg
b372395a7d Don’t override /etc/i3/config if it already exists 2009-03-06 16:56:04 +01:00
Michael Stapelberg
bf92a0c617 Don’t switch focus when in fullscreen mode 2009-03-06 16:53:47 +01:00
Michael Stapelberg
891ec20755 Use __FUNCTION__ in LOG() 2009-03-06 16:48:30 +01:00
Michael Stapelberg
4259e58655 Bugfix: One warning was left 2009-03-06 16:36:05 +01:00
Michael Stapelberg
ee1f64a94e Bugfix: return value was missing 2009-03-06 16:21:39 +01:00
Michael Stapelberg
fc3338d3c1 Bugfix: Missing flush after render_container() 2009-03-06 06:56:13 +01:00
Michael Stapelberg
96ac9f9066 Implement slog() and the LOG() macro, convert printf() to LOG() 2009-03-06 06:46:43 +01:00
Michael Stapelberg
0831f3e129 Implement handling the size hints so that aspect ratio is used correctly, fix rendering on stacks 2009-03-06 06:06:19 +01:00
Michael Stapelberg
3684abec1a Bugfix: Fix rendering (needed a flush) 2009-03-05 20:07:57 +01:00
Michael Stapelberg
d2d6c0de12 Enable switching to containers when the current container has only one client 2009-03-05 19:47:16 +01:00
Michael Stapelberg
c5dffde101 Bugfix: Correct boundary checking for increasing col/rowspan 2009-03-05 17:24:04 +01:00
Michael Stapelberg
906914fe61 Bugfix: Rendering of colspan/rowspan was wrong 2009-03-05 17:17:37 +01:00