Commit Graph

1249 Commits

Author SHA1 Message Date
Michael Stapelberg 9260cd7e12 Merge branch 'master' into next 2011-08-07 17:56:37 +02:00
Michael Stapelberg d39261a1f0 rewrite con_descend_orientation
It now uses the container orientation (if it is appropriate, the last focused
one otherwise) to recurse. This works better if the target workspace is in
vertical orientation when you use right/left or if it is in horizontal
orientation but you use up/down.
2011-08-07 15:57:36 +02:00
Michael Stapelberg 99ba193ce7 Bugfix: the up/down directions were swapped
Also compare 'output' and 'current' in the same order in both parts of the
condition to make the comparison more clear.
2011-08-07 15:46:24 +02:00
Michael Stapelberg 692d65b0fd little style fixes 2011-08-07 15:24:51 +02:00
Peter Bui a547365a88 Implement switching focus across screens.
Modify _tree_next() so that when we reach the workspace container:

1. Find the next corresponding output (screen) using the added
get_output_next().

2. If there is another output, find the visible workspace.

3. Call workspace_show on found workspace.

4. Find the appropriate window to focus (leftmost/rightmost, etc.) using
con_descend_direction, and then focus it.

I've only tested on horizontal monitors (left/right).
2011-08-07 14:33:07 +02:00
Michael Stapelberg 94ba655794 Merge branch 'master' into next 2011-08-06 18:54:50 +02:00
Michael Stapelberg cd5e74bd8e Bugfix: Call tree_render() before starting the dragging when dragging a floating window (Thanks eeemsi)
Fixes #462
2011-08-06 18:53:39 +02:00
Michael Stapelberg 2631ad4c07 Merge branch 'master' into next 2011-08-05 01:04:28 +02:00
Michael Stapelberg ec0d67410a Fix border rendering (Thanks Paride Legovini) 2011-08-05 01:03:56 +02:00
Michael Stapelberg 6e95004d6c Merge branch 'master' into next 2011-08-04 23:37:40 +02:00
Michael Stapelberg f2e1e220a4 Bugfix: Use the right format string (Thanks pnutzh4x0r) 2011-08-04 23:34:23 +02:00
Michael Stapelberg 7e0cbf18f9 Bugfix: Correctly parse the 'focused' (it’s a bool, no longer int) when restoring layout (Thanks andi) 2011-08-04 22:58:19 +02:00
Michael Stapelberg 93c3596619 Merge branch 'master' into next 2011-08-04 22:21:42 +02:00
Michael Stapelberg 1d50cff7ca Bugfix: Fix stacking order
The commit 192dbdabd6 introduced a regression
here (open three floating windows and try to raise them with clicking to see
what i mean)
2011-08-04 22:19:30 +02:00
Michael Stapelberg ecc2cae3f7 Bugfix: use ELOG to actually get the error message into the logfile shown by i3-nagbar 2011-08-04 21:43:55 +02:00
Michael Stapelberg 4e350664ae Bugfix: Check that ->symbol != NULL before using strcasecmp() 2011-08-04 21:38:13 +02:00
Michael Stapelberg 787dd4059f little style fixes for the previous patch 2011-08-04 21:25:47 +02:00
Radek Tříška 9d101d8473 check_for_duplicate_bindings 2011-08-04 20:37:01 +02:00
Michael Stapelberg e9395149b9 Merge branch 'master' into next 2011-08-04 20:11:44 +02:00
Mateusz Poszwa 1913bf0e5c Add "instance" to matching criteria 2011-08-04 20:10:31 +02:00
Simon Kampe 837bb50826 Parsing workspace name so if the first part is a number, the workspace will get this number. If no number is found it will default to -1. 2011-08-04 00:30:07 +02:00
Peter Bui 1750192f63 Modify workspace next/prev to account for workspaces on all outputs.
Generally, the traversal goes: numbered workspaces in order, and then
named workspaces in the order in which they appear in the tree.

Example:
    Output 1:       Output 2:
	1 3 D C         2 4 B A

Traversal: 1, 2, 3, 4, D, C, B, A, 1, ...

Note, after the numbered workspaces, we traverse the named workspaces
from output 1, and then output 2, etc.
2011-08-04 00:12:09 +02:00
Michael Stapelberg d0741975f1 Bugfix: Use the appropriate number when assigning numbered workspaces in randr.c 2011-08-04 00:10:23 +02:00
Michael Stapelberg c883e7050a Include <limits.h> in all.h 2011-08-04 00:10:04 +02:00
Michael Stapelberg 92481b133c docs/userguide: the correct command is 'floating enable', not 'mode floating' (Thanks Sander)
Fixes: #453
2011-08-03 20:48:28 +02:00
Michael Stapelberg e616b45c83 Bugfix: realloc() with size == 0 works like free() and returns NULL, so don’t die() 2011-08-03 20:43:08 +02:00
Michael Stapelberg 192dbdabd6 Bugfix: Correctly set the _NET_CLIENT_LIST_STACKING hint (fixes chromium tabbar)
Fixes #287
2011-08-03 20:07:03 +02:00
Michael Stapelberg cc5f3ce95a Bugfix: Fix 'resize' with direction != 'up' for floating windows
Fixes #447
2011-08-03 14:48:52 +02:00
Michael Stapelberg 9800d5286f Bugfix: Correctly check if the workspace already exists 2011-08-03 12:18:30 +02:00
Michael Stapelberg dcba8024de also handle quoted workspace names, extend t/72 for that 2011-08-03 03:33:12 +02:00
Michael Stapelberg 0092b245a1 Bugfix: When looking for an unused workspace, try the named workspaces first
Fixes: #449
2011-08-03 03:08:59 +02:00
Michael Stapelberg 719022d80a Bugfix: Ensure that the percentage is > 0.05 when using the 'resize' cmd (Thanks rogutes)
Fixes #437
2011-08-02 22:31:45 +02:00
Michael Stapelberg 554a43ca4a Bugfix: Make the criteria rules recursive in src/cfgparse.y, too (Thanks f8l) 2011-08-02 19:46:14 +02:00
Michael Stapelberg c9194b4297 Bugfix: Correctly bind on multiple keycodes if a symbol has more than one (Thanks ubitux) 2011-08-02 10:47:03 +02:00
Michael Stapelberg 3204caa98d i3-migrate-config-to-v4: drop the .pl suffix
As lintian (a Debian package checker) mentions, it is more clever to install it
without the extension, since the implementation language might change.
2011-07-31 23:11:05 +02:00
Michael Stapelberg bc98185f85 Bugfix: Handle (and free) the last_motion_notify 2011-07-31 21:21:45 +02:00
Michael Stapelberg 7180dca3b2 Bugfix: Correctly free the xcb_get_geometry reply when not managing a window 2011-07-31 20:39:33 +02:00
Michael Stapelberg 22de7593c5 Bugfix: free() the grab_pointer reply 2011-07-31 19:52:58 +02:00
Michael Stapelberg 6c35a0b93b handle the xcb_grab_pointer reply 2011-07-31 19:48:39 +02:00
Michael Stapelberg ffbcfa2c97 Bugfix: also free() X11 errors in the main loop 2011-07-31 19:41:57 +02:00
Michael Stapelberg fdfa88586d Forgot free(event) 2011-07-31 19:34:55 +02:00
Michael Stapelberg fa1fe3cfed Bugfix: Same xcb_send_event fix as 1e0033bce4 2011-07-31 19:33:56 +02:00
Michael Stapelberg 5bfc89f733 Bugfix: Correctly pass the pointer to xcb_send_event 2011-07-31 19:26:38 +02:00
Michael Stapelberg 52b3646ecc xcb: don’t use the _unchecked variant for requests which have a reply 2011-07-31 18:19:41 +02:00
Michael Stapelberg 7f3f7c26b6 Bugfix: free replies after using them 2011-07-31 18:17:56 +02:00
Michael Stapelberg d9ff172d36 Bugfix: load_font: free reply after using it 2011-07-31 17:57:11 +02:00
Michael Stapelberg cbfcf5bd8b Bugfix: free font string after using it 2011-07-31 17:54:53 +02:00
Michael Stapelberg ee83df9684 Bugfix: cfgparse: correctly free parser/lexer 2011-07-31 17:50:54 +02:00
Michael Stapelberg 088681c781 Bugfix: property handlers: correctly free replies in all cases 2011-07-31 17:46:41 +02:00
Michael Stapelberg 1e0033bce4 Bugfix: Allocate 32 bytes for xcb_send_event, it always copies 32 bytes
Fixes an 'uninitialized memory' error in valgrind
2011-07-31 17:46:01 +02:00
Michael Stapelberg 4875868689 Bugfix: Free property replies in their handlers 2011-07-31 17:12:37 +02:00
Michael Stapelberg d3e3339a05 Bugfix: Fix small memory leak when initializing output Cons 2011-07-31 17:11:51 +02:00
Michael Stapelberg f2fc523de7 Bugfix: fix memory leak in src/cmdparse.y 2011-07-31 17:11:28 +02:00
Michael Stapelberg 3721c598bd Bugfix: Set the cursor via the Xlib connection if XCursor is supported
This fixes a race where we created cursors on the Xlib connection, flushed,
then used the cursor on the XCB connection. Even though we flushed, the X
server did not process the requests yet and therefore returned a BadCursor
error.

This bugfix uses the Xlib connection for setting the root window cursor which
will ensure that the requests are properly serialized.

An easy test for this (on my machine) is the following ~/.xsession:
    xsetroot -cursor_name cross
    exec i3
If you see a cross cursor instead of the pointer, the race happens. You’ll see
a error_code=6 error in your ~/.xsession-errors.
2011-07-29 13:13:51 +02:00
Michael Stapelberg bc7dec6a4c X11 errors: also log the error_code (see X Protocol, Appendix B, Errors) 2011-07-29 13:11:02 +02:00
Fernando Tarlá Cardoso Lemos ae9c90ba19 Don't leak the cursor_id.
Fixes a server-side leak. The cursor_id is not needed when we're
using themed cursors (we never freed it either).
2011-07-29 12:38:44 +02:00
Fernando Tarlá Cardoso Lemos 7a18dcc89e Set the root window cursor. Fixes #442. 2011-07-29 12:38:24 +02:00
Michael Stapelberg ed30043950 Bugfix: Also abort drag_pointer after XCB_KEY_PRESS / XCB_KEY_RELEASE (Thanks eeemsi) 2011-07-28 21:01:34 +02:00
Michael Stapelberg f84264ae41 remove _NET_WM_WORKAREA from _NET_SUPPORTED for now
See ticket #301, this is a problem with Qt apps on your second monitor.

We should implement better EWMH support, but not before the release :).
2011-07-27 12:51:38 +02:00
Michael Stapelberg 18513e1638 x.c: fix warning by removing unused variable 2011-07-25 00:32:14 +02:00
Michael Stapelberg 7a7764a0d9 handlers.c: fix warnings 2011-07-25 00:32:03 +02:00
Michael Stapelberg 797ba5f7c8 remove unnecessary close, because fclose already closes the file descriptor 2011-07-24 18:42:46 +02:00
Michael Stapelberg 34eb9b2664 ipc: make 'focused' a bool 2011-07-24 15:00:09 +02:00
Michael Stapelberg b09bb0fc2a ipc: make 'urgent' a bool 2011-07-24 14:54:30 +02:00
Michael Stapelberg 36fde6dbe1 ipc: send 'percent': null when percent is not relevant for the container 2011-07-24 14:47:28 +02:00
Michael Stapelberg a05a9f8dae Set some more atoms for _NET_SUPPORTED (Thanks lexszero) 2011-07-23 22:40:47 +02:00
Michael Stapelberg 3f7c7c2e38 remove left-over wordexp.h include 2011-07-23 22:37:41 +02:00
Michael Stapelberg ffe297f5e5 Bugfix: use the global root variable, don’t get the first one (Thanks quaec) 2011-07-23 22:29:01 +02:00
Michael Stapelberg fdd098b010 secure strscpy by replacing with strncpy 2011-07-23 22:22:36 +02:00
Michael Stapelberg 370715d1a8 Bugfix: Don’t leak file descriptor 2011-07-23 22:11:01 +02:00
Michael Stapelberg 062ce3ef03 Bugfix: Correctly resize when clicking on the border of a stacked con
Runs the same code as for non-stacked / non-tabbed containers, but on the
parent of the container (which is the stacked / tabbed con, since route_click
gets called with the child).
2011-07-23 21:48:14 +02:00
Michael Stapelberg 02dfb8e891 use memmem and strndup from FreeBSD on Darwin (Thanks Marcus) 2011-07-17 15:18:45 +02:00
Michael Stapelberg 2d71102796 Bugfix: Switch to appropriate workspace when using 'focus' (+test) (Thanks rogutes)
Fixes #432
2011-07-14 23:45:36 +02:00
Michael Stapelberg 8c1a242f5f reload the config after editing it through i3-nagbar 2011-07-13 18:47:08 +02:00
Claudio Marforio cc24a96e96 patch to allow exec_always in configure file
fixed indentation, updated docs
2011-07-12 18:23:14 +02:00
Michael Stapelberg 5555c0fd3b Bugfix: Don’t raise the stacked/tabbed decoration when border != BS_NONE and children == 1 (Thanks smartass)
Otherwise a black area would cover the top of the child window.
2011-07-11 23:17:56 +02:00
Michael Stapelberg 06054642fe debug.c: remove handle_event 2011-07-11 18:21:25 +02:00
Michael Stapelberg 897b53f1c2 Bugfix: run nagbar commands through sh(1) (Thanks Tucos) 2011-07-11 16:51:57 +02:00
Michael Stapelberg 429d310011 nagbar: use less / vi as fallbacks for PAGER / EDITOR 2011-07-11 16:40:10 +02:00
Michael Stapelberg 05e39c1c48 Ignore X11 errors caused by ReparentWindow / ChangeProperty on already destroyed windows
These errors can happen because a DestroyWindow request by a client will
trigger an UnmapNotify, then a DestroyNotify. We cannot distinguish this
UnmapNotify from an UnmapNotify not followed by a DestroyNotify, so we just try
to send the ReparentWindow / ChangeProperty and ignore the errors, if any.
2011-07-10 23:44:13 +02:00
Michael Stapelberg 48f5166daf log: display time in microseconds when DEBUG_TIMING is set 2011-07-10 23:11:21 +02:00
Michael Stapelberg 937a80511a x: only configure window coordinates when height > 0
Fixes some X11 errors
2011-07-10 22:59:04 +02:00
Michael Stapelberg d9038cdb80 x: Only render / copy pixmap when the pixmap was actually created
Fixes some X11 errors
2011-07-10 22:58:49 +02:00
Michael Stapelberg 85d851de5f x: disable GraphicsExposure events on our pixmap graphics contexts
Gets rid of GraphicsExposure and NoExpose events, which we don’t use anyways.
2011-07-10 22:27:51 +02:00
Michael Stapelberg 78d25c4cd9 expose event handler: use x_deco_recurse 2011-07-10 22:06:16 +02:00
Michael Stapelberg 7d9ba707b3 x: Don’t pre-render the decoration for windows inside a stack which are not visible
Saves n-1 decoration renderings for n windows in a stack whenever a new window
gets added or removed.
2011-07-10 21:55:29 +02:00
Michael Stapelberg d7f9700ba4 x: use PolySegment instead of two PolyLine requests 2011-07-10 21:19:31 +02:00
Michael Stapelberg 8f4b95dccd x: change EnterNotify event mask only for mapped windows
Saves a few ChangeWindowAttributes requests.
2011-07-10 20:18:06 +02:00
Michael Stapelberg 37e0cf8346 x: copy the pre-rendered pixmap contents to a decoration window immediately after mapping
Reduces flickering.
2011-07-10 20:15:22 +02:00
Michael Stapelberg afef42a4ac x: set the contents of a decoration window immediately after changing its size
Reduces flickering. A window loses its contents when being resized, so we have
to restore them as fast as possible.
2011-07-10 20:08:40 +02:00
Michael Stapelberg 517833569d x: raise the stack decoration above the stack windows (reduces flickering)
This reduces flickering when opening new windows in a stack, see the comment.
2011-07-10 20:05:49 +02:00
Michael Stapelberg 0d8dd571f8 x: when rendering stacked/tabbed cons, only update decoration once, saves some CopyAreas 2011-07-10 20:01:29 +02:00
Michael Stapelberg 8be26c9a22 x: Don’t set background color on frame windows, reduces flickering 2011-07-10 19:58:46 +02:00
Michael Stapelberg 64cfb2dbb1 Revert "x: Set pixmap as background window, saves a lot of CopyAreas"
This reverts commit 84b804cda6.
Turns out that it triggered graphic corruptions on ATI graphics cards (Thanks
aniou) with certain drivers.
2011-07-10 16:22:09 +02:00
Michael Stapelberg c55abca115 add i3-nagbar. tells you about config file errors (for example) 2011-07-10 14:33:19 +02:00
Michael Stapelberg 0add563448 Bugfix: multiple criteria should use a logical AND (+test) (Thanks f8l) 2011-07-08 00:21:29 +02:00
Michael Stapelberg 0ca229ceb3 migrate-config: also make force_focus_wrapping a v4-only statement 2011-07-08 00:17:48 +02:00
Michael Stapelberg ac335fcffa Automatically call the migration script when the config does not look like v4 2011-07-06 20:43:00 +02:00
Michael Stapelberg c408fef021 Implement 'focus floating', 'focus tiling' and 'focus mode_toggle' (+test +docs) 2011-07-04 17:09:52 +02:00
Michael Stapelberg 71741d7620 Bugfix: Only set ENTER_WINDOW event mask for mapped windows (fixes focus problems)
Fixes focus problems when switching to empty workspaces or when going in/out of
fullscreen.
2011-07-04 13:41:02 +02:00