Commit Graph

249 Commits

Author SHA1 Message Date
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 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 71993c9b48 Implement wrapping left/right/up/down across screens 2009-03-09 07:39:19 +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 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
Michael Stapelberg a411ed24cb Bugfix: Correctly check for empty containers and unmap the stack_win 2009-03-06 19:08:59 +01:00
Michael Stapelberg 891ec20755 Use __FUNCTION__ in LOG() 2009-03-06 16:48:30 +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 906914fe61 Bugfix: Rendering of colspan/rowspan was wrong 2009-03-05 17:17:37 +01:00
Michael Stapelberg 56393c823e Make colorpixels independent from clients 2009-03-05 02:58:12 +01:00
Michael Stapelberg 17bca23a8c Implement a focus stack, correctly free table columns/rows 2009-03-05 01:20:13 +01:00
Michael Stapelberg 03e48b8bfe Bugfix: Reconfigure x/y of stack_windows when necessary 2009-03-04 21:49:29 +01:00
Michael Stapelberg bd9b90d285 Fix datatype for cursor 2009-03-04 18:09:04 +01:00
Michael Stapelberg a02b861826 Use "conn" for xcb_connection and "event" for xcb_event_* variables everywhere 2009-03-04 15:45:12 +01:00
Michael Stapelberg 45827607dc Use default cursor (XC_left_ptr) for all windows 2009-03-04 15:28:50 +01:00
Michael Stapelberg f45e706c48 Merge font.c into xcb.c 2009-03-04 14:52:04 +01:00
Michael Stapelberg 05747c4a1c Implement an internal bar which displays the workspaces 2009-03-04 12:09:43 +01:00
Michael Stapelberg 415b5cc0e8 Load configuration file from ~/.i3/config or /etc/i3/config 2009-03-04 09:16:18 +01:00
Michael Stapelberg 3911d18982 Implement moving windows to other workspaces 2009-03-04 08:59:03 +01:00
Michael Stapelberg 3b50615a71 Implement Xinerama screen changes 2009-03-03 23:51:02 +01:00
Michael Stapelberg 16a514b9c1 Use a different color for focused windows in not focused containers, includes bugfixes for re-decoration 2009-03-03 02:28:26 +01:00
Michael Stapelberg dd325879d1 Bugfix: Override client’s moves/resizes in configure_notify_event 2009-03-03 01:14:11 +01:00
Michael Stapelberg 3f662eaed5 Bugfix: Forgot to change the number of atoms correctly 2009-03-02 03:35:25 +01:00
Michael Stapelberg ac6567c0a6 Documentation update: Make some comments more understandable, more docs 2009-03-01 22:00:54 +01:00
Michael Stapelberg cb6ea9861d Bugfix: Fix various bugs when switching workspaces 2009-02-28 22:11:48 +01:00
Michael Stapelberg d8a6f41e39 Bugfix: Set focus when table was shrinked and CUR_CELL might have been shrinked 2009-02-28 01:12:05 +01:00
Michael Stapelberg 10c5702a78 Implement restart-command to restart i3 without having to end your session 2009-02-27 22:40:48 +01:00
Michael Stapelberg e77ebb6c71 Implement configuration file parsing 2009-02-25 00:50:30 +01:00
Michael Stapelberg dadace2fa3 Implement automatic cleaning of the table 2009-02-24 20:29:30 +01:00
Michael Stapelberg aa18ca0889 More documentation, cleanups, and a cache for get_colorpixel() 2009-02-24 14:18:08 +01:00
Michael Stapelberg 36aec13860 Cleanups, documentation 2009-02-24 01:24:28 +01:00
Michael Stapelberg 0e3a378c39 Implement stacking 2009-02-24 00:30:04 +01:00
Michael Stapelberg fe0485f9e5 Fix some movement/rendering bugs 2009-02-23 01:41:26 +01:00
Michael Stapelberg 1a0817eb39 Correctly handle _NET_WM_WINDOW_TYPE == _NET_WM_WINDOW_TYPE_DOCK (for dzen2 -dock) 2009-02-23 00:18:13 +01:00
Michael Stapelberg 6b1069cd47 Implement horizontal resizing 2009-02-16 03:28:07 +01:00
Michael Stapelberg 7216738778 Implement exit_if_null using variadic macros, fix compilation 2009-02-15 22:52:33 +01:00
Michael Stapelberg 742cef2881 Finalize font.c 2009-02-15 02:52:52 +01:00
Michael Stapelberg 0917cdda36 Cleanup load_font(), make it caching 2009-02-15 02:40:03 +01:00
Michael Stapelberg 09cd7bd2d0 Implement Xinerama (workspaces have a specific screen) 2009-02-15 01:58:09 +01:00
Michael Stapelberg 18543c6bce Implement fullscreen mode (Mod1+f) 2009-02-14 20:12:50 +01:00
Michael Stapelberg d06fe8bc9e Bugfix: Correctly handle unmap, don’t apply attribute XCB_EVENT_MASK_BUTTON_PRESS
Those two fix problems seen with mplayer
2009-02-14 19:55:18 +01:00
Michael Stapelberg df7621d5a5 Implement fullscreen (_NET_WM_STATE_FULLSCREEN) 2009-02-14 08:38:07 +01:00
Michael Stapelberg fb4c851e2a Add vim hints, copyright notice to each file, add LICENSE, retab! everything 2009-02-14 02:33:31 +01:00
Michael Stapelberg 8881068dc3 Various code improvements 2009-02-14 02:19:04 +01:00
Michael Stapelberg 4589c26558 Environment filtering is not needed. Instead, open applications through SHELL, double-fork 2009-02-14 01:36:12 +01:00
Michael Stapelberg 82dd64ff24 Move stuff to include/ and src/ 2009-02-13 19:09:25 +01:00