]> git.sur5r.net Git - i3/i3/log
i3/i3
8 years agowindow.c: fix memory leak
Michael Stapelberg [Sat, 9 Jan 2016 12:54:37 +0000 (13:54 +0100)]
window.c: fix memory leak

8 years agoreload: fix memory leak
Michael Stapelberg [Sat, 9 Jan 2016 12:46:49 +0000 (13:46 +0100)]
reload: fix memory leak

8 years agocommands.c: fix memory leak
Michael Stapelberg [Sat, 9 Jan 2016 12:39:00 +0000 (13:39 +0100)]
commands.c: fix memory leak

8 years agox.c: fix memory leak
Michael Stapelberg [Sat, 9 Jan 2016 12:13:57 +0000 (13:13 +0100)]
x.c: fix memory leak

8 years agolog.c: fix memory leak
Michael Stapelberg [Sat, 9 Jan 2016 12:10:54 +0000 (13:10 +0100)]
log.c: fix memory leak

8 years agotree_restore(): fix memory leak
Michael Stapelberg [Sat, 9 Jan 2016 11:50:29 +0000 (12:50 +0100)]
tree_restore(): fix memory leak

8 years agot/525-i3bar-mouse-bindings: wait for i3bar to appear before testing
Michael Stapelberg [Sat, 9 Jan 2016 11:47:00 +0000 (12:47 +0100)]
t/525-i3bar-mouse-bindings: wait for i3bar to appear before testing

Otherwise, this test is flaky when i3bar takes a while to start.

8 years agoi3test::XTEST: free errors and connections with errors
Michael Stapelberg [Sat, 9 Jan 2016 11:41:02 +0000 (12:41 +0100)]
i3test::XTEST: free errors and connections with errors

8 years agoi3bar: fix memory leak in socket path
Michael Stapelberg [Sat, 9 Jan 2016 11:30:15 +0000 (12:30 +0100)]
i3bar: fix memory leak in socket path

8 years agofix memory leak: free(pointerreply);
Michael Stapelberg [Sat, 9 Jan 2016 11:07:47 +0000 (12:07 +0100)]
fix memory leak: free(pointerreply);

8 years agoipc: fix memory leak when clients with subscriptions disconnect
Michael Stapelberg [Fri, 8 Jan 2016 20:24:21 +0000 (21:24 +0100)]
ipc: fix memory leak when clients with subscriptions disconnect

8 years agoipc: fix cosmetic memory leak when shutting down
Michael Stapelberg [Fri, 8 Jan 2016 20:24:12 +0000 (21:24 +0100)]
ipc: fix cosmetic memory leak when shutting down

8 years agocon_mark: fix heap-use-after-free
Michael Stapelberg [Fri, 8 Jan 2016 19:41:09 +0000 (20:41 +0100)]
con_mark: fix heap-use-after-free

8 years agorename workspace: fix heap-use-after-free
Michael Stapelberg [Fri, 8 Jan 2016 19:21:54 +0000 (20:21 +0100)]
rename workspace: fix heap-use-after-free

8 years agoi3-dump-log: explicitly free shmname
Michael Stapelberg [Fri, 8 Jan 2016 19:17:34 +0000 (20:17 +0100)]
i3-dump-log: explicitly free shmname

Reduces memory usage and makes LeakSanitizer more quiet.

8 years agoroot_atom_contents: properly clean up in all cases
Michael Stapelberg [Fri, 8 Jan 2016 19:15:34 +0000 (20:15 +0100)]
root_atom_contents: properly clean up in all cases

8 years agobindings.h: mark DEFAULT_BINDING_MODE as external
Michael Stapelberg [Fri, 8 Jan 2016 18:56:32 +0000 (19:56 +0100)]
bindings.h: mark DEFAULT_BINDING_MODE as external

This prevents the following linker warning (only when compiling with
-fsanitize=address):

/usr/bin/ld: Warning: size of symbol `DEFAULT_BINDING_MODE' changed
from 8 in src/resize.o to 64 in src/bindings.o

8 years agoMerge pull request #2150 from Airblader/bug-2149
Michael Stapelberg [Wed, 6 Jan 2016 20:15:18 +0000 (21:15 +0100)]
Merge pull request #2150 from Airblader/bug-2149

Use correct fallback color for decoration_border.

8 years agoUse correct fallback color for decoration_border. 2150/head
Ingo Bürk [Wed, 6 Jan 2016 14:19:42 +0000 (09:19 -0500)]
Use correct fallback color for decoration_border.

The newly introduced decoration_border color incorrectly uses the default value
for "background" as a fallback when not specified. Instead, it should use the
user-specified "background" as a fallback.

fixes #2149

8 years agoMerge pull request #2145 from Airblader/bug-2144
Michael Stapelberg [Wed, 6 Jan 2016 08:15:07 +0000 (09:15 +0100)]
Merge pull request #2145 from Airblader/bug-2144

Fix segfault when calling "i3 -C".

8 years agoFix segfault when calling "i3 -C". 2145/head
Ingo Bürk [Sun, 3 Jan 2016 00:11:55 +0000 (19:11 -0500)]
Fix segfault when calling "i3 -C".

Commit 287a0b4 introduced a segfault when validating the i3 config
as the root_screen will not be set in this case, causing a null
pointer dereference.

fixes #2144

8 years agoMerge pull request #2143 from Airblader/feature-2120
Michael Stapelberg [Tue, 5 Jan 2016 21:32:15 +0000 (22:32 +0100)]
Merge pull request #2143 from Airblader/feature-2120

Allow title_format for all containers

8 years agoMerge pull request #2136 from lotheac/next
Michael Stapelberg [Tue, 5 Jan 2016 21:24:53 +0000 (22:24 +0100)]
Merge pull request #2136 from lotheac/next

draw client borders in border color, not background

8 years agoMove title_format from window to container. 2143/head
Ingo Bürk [Tue, 29 Dec 2015 17:01:51 +0000 (12:01 -0500)]
Move title_format from window to container.

This patch moves the title_format information from windows to containers.
Furthermore, it allows correctly setting it on window-less containers and
displays the title accordingly for split containers.

We now also dump and read title_format in GET_TREE / during restarts.

fixes #2120

8 years agoadd decoration_border color for the actual client borders 2136/head
Lauri Tirkkonen [Mon, 28 Dec 2015 12:37:42 +0000 (14:37 +0200)]
add decoration_border color for the actual client borders

see https://github.com/i3/i3/pull/2136

8 years agoMerge pull request #2148 from Airblader/feature-2120-memleaks
Michael Stapelberg [Tue, 5 Jan 2016 08:11:44 +0000 (09:11 +0100)]
Merge pull request #2148 from Airblader/feature-2120-memleaks

Fix memory leaks in title_format.

8 years agoFix memory leaks in title_format. 2148/head
Ingo Bürk [Mon, 4 Jan 2016 23:39:40 +0000 (18:39 -0500)]
Fix memory leaks in title_format.

This fixes three memory leaks that were found during the implementation of #2120
so that they can be fixed in a bugfix release.

relates to #2143

8 years agoMerge pull request #2139 from jolange/feature_split-toggle
Michael Stapelberg [Mon, 4 Jan 2016 18:34:09 +0000 (19:34 +0100)]
Merge pull request #2139 from jolange/feature_split-toggle

added "toggle" option to "split" command

8 years agoadded "toggle" option to "split" command 2139/head
Johannes Lange [Mon, 4 Jan 2016 16:31:47 +0000 (17:31 +0100)]
added "toggle" option to "split" command

as requested in #1814

8 years agoi3-nagbar: explicitly set cursor using libxcursor if available
Michael Stapelberg [Mon, 4 Jan 2016 08:26:45 +0000 (09:26 +0100)]
i3-nagbar: explicitly set cursor using libxcursor if available

See commit b1f1da432 for context.

fixes #2114

8 years agoMerge pull request #2133 from Airblader/feature-2115
Michael Stapelberg [Mon, 4 Jan 2016 08:04:51 +0000 (09:04 +0100)]
Merge pull request #2133 from Airblader/feature-2115

Added test for #2097.

8 years agoMigrate "xdotool click" in tests to XTEST. 2133/head
Ingo Bürk [Mon, 4 Jan 2016 02:48:39 +0000 (21:48 -0500)]
Migrate "xdotool click" in tests to XTEST.

8 years agoAdded test for #2097.
Ingo Bürk [Mon, 28 Dec 2015 00:03:31 +0000 (19:03 -0500)]
Added test for #2097.

fixes #2115

8 years agoMerge pull request #2135 from Alexis211/colors
Michael Stapelberg [Wed, 30 Dec 2015 15:24:31 +0000 (16:24 +0100)]
Merge pull request #2135 from Alexis211/colors

Correct color management for non-true color displays

8 years agodocs/ipc: add https://github.com/drmgc/i3ipcpp
Michael Stapelberg [Wed, 30 Dec 2015 14:59:53 +0000 (15:59 +0100)]
docs/ipc: add https://github.com/drmgc/i3ipcpp

8 years agoget_colorpixel support for non-true color displays 2135/head
Alex Auvolat [Mon, 28 Dec 2015 11:58:32 +0000 (12:58 +0100)]
get_colorpixel support for non-true color displays

Re-introduce fully-fledged get_colorpixel function, which enables arbitrary
color depths for the display.  The previous code is kept as an optimization for
the case of a true color display, where a X11 roundtrip is unnecessary.

8 years agoCorrect color management for pango fonts
Alex Auvolat [Mon, 28 Dec 2015 11:43:53 +0000 (12:43 +0100)]
Correct color management for pango fonts

Corrects the cases where the colorpixel is not 0xRRGGBB : we have to
use the full color_t struct to describe font colors, as Pango expects
RGB values and not an XCB colorpixel value.

8 years agoMerge pull request #2138 from Alexis211/factor
Michael Stapelberg [Tue, 29 Dec 2015 12:51:15 +0000 (13:51 +0100)]
Merge pull request #2138 from Alexis211/factor

Refactor extern definition of conn and root_screen

8 years agoRefactor extern definition of conn and root_screen 2138/head
Alex Auvolat [Tue, 29 Dec 2015 11:47:12 +0000 (12:47 +0100)]
Refactor extern definition of conn and root_screen

8 years agoMerge pull request #2137 from fmthoma/fix-assign-workspace
Michael Stapelberg [Tue, 29 Dec 2015 11:26:38 +0000 (12:26 +0100)]
Merge pull request #2137 from fmthoma/fix-assign-workspace

Comply with documentation: 'workspace' token in 'assign' command

8 years agoMerge pull request #2131 from kneitinger/next
Michael Stapelberg [Tue, 29 Dec 2015 11:18:57 +0000 (12:18 +0100)]
Merge pull request #2131 from kneitinger/next

userguide: clarify quoting of exec commands

8 years agoMerge pull request #2134 from Airblader/bug-1761
Michael Stapelberg [Tue, 29 Dec 2015 10:50:58 +0000 (11:50 +0100)]
Merge pull request #2134 from Airblader/bug-1761

Properly validate containers when killing via criteria

8 years agoMerge pull request #2132 from Airblader/bug-2128
Michael Stapelberg [Tue, 29 Dec 2015 10:44:19 +0000 (11:44 +0100)]
Merge pull request #2132 from Airblader/bug-2128

Move urgent flag before killing the parent.

8 years agoComply with documentation: 'workspace' token in 'assign' command 2137/head
Franz Thoma [Mon, 28 Dec 2015 18:38:17 +0000 (19:38 +0100)]
Comply with documentation: 'workspace' token in 'assign' command

According to the User's Guide [1], an `assign` command allows a
`workspace` token after the selector, as an alternative or in addition
to the unicode arrow `→`. In reality, however, the `workspace` token is
not recognized.

Example:
  assign [class="Firefox"] workspace "1: Browser"
should assign Firefox windows to workspace `1: Browser`, but the the
browser window appears on a new workspace called
`workspace "1: Browser"` instead.

With this fix, both `→` and `workspace` are recognized (and ignored)
after the selector.

[1] https://i3wm.org/docs/userguide.html#_automatically_putting_clients_on_specific_workspaces

8 years agoValidate matched containers for "kill" command correctly. 2134/head
Ingo Bürk [Mon, 28 Dec 2015 03:11:51 +0000 (22:11 -0500)]
Validate matched containers for "kill" command correctly.

We now execute the validations when "kill" is executed even if match
criteria are used. This prevents users from killing workspace containers,
which instead kills all clients (as before when not using criteria).

fixes #1761

8 years agoRename tree_close() to tree_close_internal().
Ingo Bürk [Mon, 28 Dec 2015 01:58:35 +0000 (20:58 -0500)]
Rename tree_close() to tree_close_internal().

It should be clear for callers of this function that this is an internal
function that skips certain validations which might be important. Therefore
we make it clear that this is an internal function by renaming it.

relates to #1761

8 years agoMove urgent flag before killing the parent. 2132/head
Ingo Bürk [Sun, 27 Dec 2015 23:08:30 +0000 (18:08 -0500)]
Move urgent flag before killing the parent.

We need to move the urgent flag when moving a container across
workspaces before calling on_remove_child on the parent in order
to avoid a crash.

fixes #2128

8 years agouserguide: clarify quoting of exec commands 2131/head
Kyle Kneitinger [Sun, 27 Dec 2015 07:29:26 +0000 (23:29 -0800)]
userguide: clarify quoting of exec commands

8 years agoMerge pull request #2113 from Airblader/bug-2111
Michael Stapelberg [Fri, 25 Dec 2015 16:14:29 +0000 (17:14 +0100)]
Merge pull request #2113 from Airblader/bug-2111

Match on all criteria even if con_id or con_mark are given.

8 years agoi3bar: explicitly set cursor using libxcursor if available
Michael Stapelberg [Fri, 25 Dec 2015 15:38:11 +0000 (16:38 +0100)]
i3bar: explicitly set cursor using libxcursor if available

Even if the X11 root window cursor is not set up correctly for some
reason, with this fix, users should at least see the correct cursor when
the pointer is over i3bar.

see issue #2114

8 years agomake: should be XCB_CURSOR, not XCURSOR
Michael Stapelberg [Fri, 25 Dec 2015 15:37:44 +0000 (16:37 +0100)]
make: should be XCB_CURSOR, not XCURSOR

After all, we’re not using libXcursor, but libxcb-cursor :).

8 years agoBugfix: don’t remove SubstructureRedirect event mask temporarily
Michael Stapelberg [Tue, 22 Dec 2015 21:33:37 +0000 (22:33 +0100)]
Bugfix: don’t remove SubstructureRedirect event mask temporarily

This fixes race conditions, for example when i3bar gets reconfigured
after the available outputs change. In that specific case, i3bar sends a
ConfigureWindow request (see
https://github.com/i3/i3/blob/b5693d6fb33ad29337e4187a2db4a2618ea8fb4c/i3bar/src/xcb.c#L376)
which normally is turned into a ConfigureRequest that i3 largely
ignores, only the dock client’s height is considered (see
https://github.com/i3/i3/blob/b5693d6fb33ad29337e4187a2db4a2618ea8fb4c/src/handlers.c#L390).

Turning ConfigureWindow into ConfigureRequest is only done when the
SubstructureRedirect event mask is set, and because we temporarily
removed _all_ events from our mask, the ConfigureWindow request went
through unmodified.

This in turn lead to the i3bar client window (not its decoration frame)
being positioned at e.g. y=1304, whereas dock client windows should
always end up at x=0 y=0 within their decoration frame. The result of
the i3bar client window being out of the visible space was either a
black i3bar or graphics corruption.

This also fixes issue #1904, I think. I couldn’t reproduce issue #1904
specifically, but when i3bar is in the misconfigured state, it will
receive a VisibilityNotify event, telling i3bar that it is obscured.
This would explain why i3bar sent a SIGSTOP in issue #1904.

fixes #1904

8 years agouserguide: faq has moved to reddit
Michael Stapelberg [Sun, 20 Dec 2015 12:12:37 +0000 (13:12 +0100)]
userguide: faq has moved to reddit

8 years agoMerge pull request #2121 from Airblader/bug-base-10
Michael Stapelberg [Thu, 17 Dec 2015 21:10:06 +0000 (22:10 +0100)]
Merge pull request #2121 from Airblader/bug-base-10

Don't force base 10 for parsing id.

8 years agoDon't force base 10 for parsing id. 2121/head
Ingo Bürk [Thu, 17 Dec 2015 14:43:34 +0000 (09:43 -0500)]
Don't force base 10 for parsing id.

8 years agoMatch on all criteria even if con_id or con_mark are given. 2113/head
Ingo Bürk [Tue, 15 Dec 2015 12:38:56 +0000 (07:38 -0500)]
Match on all criteria even if con_id or con_mark are given.

Previously, if a match specification contained the con_id or con_mark criterion,
all other criteria were ignored. However, a user may want to specify one of
those two unique identifiers and still specify others as well, for example to
match the currently focused window, but only if it has a certain WM_CLASS:

    [con_id=__focused__ class=special] kill

We now check all specified criteria.

fixes #2111

8 years agoMerge pull request #2102 from ccryx/next
Michael Stapelberg [Wed, 16 Dec 2015 07:58:59 +0000 (08:58 +0100)]
Merge pull request #2102 from ccryx/next

Add support for _NET_WM_WINDOW_TYPE_NOTIFICATION

8 years agoMerge pull request #2112 from Airblader/feature-multiple-tree-render
Michael Stapelberg [Wed, 16 Dec 2015 07:56:11 +0000 (08:56 +0100)]
Merge pull request #2112 from Airblader/feature-multiple-tree-render

Avoid rendering the tree twice in a row

8 years agoSupport matching _NET_WM_WINDOW_TYPE_NOTIFICATION 2102/head
Florian Merkel [Mon, 7 Dec 2015 11:34:24 +0000 (12:34 +0100)]
Support matching _NET_WM_WINDOW_TYPE_NOTIFICATION

This commit fixes #1969 by adding support for matching a window's type
against _NET_WM_WINDOW_TYPE_NOTIFICATION. The userguide and tests were
updated to reflect this change.

8 years agoAvoid rendering the tree twice in a row 2112/head
Ingo Bürk [Tue, 15 Dec 2015 12:21:11 +0000 (07:21 -0500)]
Avoid rendering the tree twice in a row

The callee already renders the tree if necessary, so despite the documentation
of the function, doing it again on the caller side is unnecessary.

8 years agoMerge pull request #2108 from Airblader/feature-2097
Michael Stapelberg [Tue, 15 Dec 2015 18:15:03 +0000 (19:15 +0100)]
Merge pull request #2108 from Airblader/feature-2097

Allow mouse bindings to run on the root window.

8 years agoAllow mouse bindings to run on the root window. 2108/head
Ingo Bürk [Sat, 12 Dec 2015 20:45:59 +0000 (15:45 -0500)]
Allow mouse bindings to run on the root window.

Previously, mouse bindings could only be run when a window was present,
by using --whole-window. Such bindings would not work on empty
workspaces. However, this is a valid usecase for bindings like

    bindsym $mod+button4 workspace prev
    bindsym $mod+button5 workspace next

Hence, we need to grab the root window as well and run bindings on it.

fixes #2097

8 years agoMerge pull request #2105 from Airblader/bug-2099
Michael Stapelberg [Mon, 14 Dec 2015 19:48:49 +0000 (20:48 +0100)]
Merge pull request #2105 from Airblader/bug-2099

Reject empty swallow definitions

8 years agoMerge pull request #2103 from Airblader/bug-2091
Michael Stapelberg [Mon, 14 Dec 2015 08:17:12 +0000 (09:17 +0100)]
Merge pull request #2103 from Airblader/bug-2091

Reject invalid match criteria with an error.

8 years agoReject empty swallow definitions 2105/head
Ingo Bürk [Fri, 11 Dec 2015 08:00:20 +0000 (09:00 +0100)]
Reject empty swallow definitions

Empty swallow definitions don't make sense and can lead to crashes,
for that reason we reject them.

fixes #2099

8 years agotravis: install git 1.9.1 from trusty for git fetch --unshallow
Michael Stapelberg [Wed, 9 Dec 2015 22:07:18 +0000 (23:07 +0100)]
travis: install git 1.9.1 from trusty for git fetch --unshallow

8 years agoReject invalid match criteria with an error. 2103/head
Ingo Bürk [Wed, 9 Dec 2015 12:39:08 +0000 (13:39 +0100)]
Reject invalid match criteria with an error.

Previously, using a command like

  [con_id=foo] kill

would kill the currently focused window because while an error for
not being able to parse the con_id was logged, no further action
was taken, which caused the criterion to be ignored. In this case,
the fallback behavior of using the focused window took over.

For con_id, id and window_type we now reject incorrect values with
an error and abort the command.

fixes #2091

8 years agoMerge pull request #2095 from Airblader/bug-2090
Michael Stapelberg [Fri, 4 Dec 2015 08:02:51 +0000 (09:02 +0100)]
Merge pull request #2095 from Airblader/bug-2090

Allow "move position center" to operate on matched windows

8 years agoMerge pull request #2096 from Airblader/bug-2094
Michael Stapelberg [Fri, 4 Dec 2015 08:01:26 +0000 (09:01 +0100)]
Merge pull request #2096 from Airblader/bug-2094

Fix draw_util crash

8 years agoFail gracefully when the gc cannot be created 2096/head
Ingo Bürk [Thu, 3 Dec 2015 17:59:35 +0000 (18:59 +0100)]
Fail gracefully when the gc cannot be created

We now only log an error but do not exit when creating the graphics
context fails. While, if this happens, rendering will likely be wrong,
this is still better than terminating the user's session entirely due
to a rendering problem, potentially causing data loss.

relates to #2094

8 years agoCast unsigned to signed before comparison
Ingo Bürk [Thu, 3 Dec 2015 17:57:02 +0000 (18:57 +0100)]
Cast unsigned to signed before comparison

The values of a Rect are unsigned, but can contain signed values.
Using MAX when the value is negative causes incorrect behavior and
makes the result stay negative, which is what we wanted to avoid here
in the first place.

Fix by properly casting the value for the comparison.

fixes #2094

8 years agoAllow "move position center" to operate on matched windows 2095/head
Ingo Bürk [Thu, 3 Dec 2015 12:24:39 +0000 (13:24 +0100)]
Allow "move position center" to operate on matched windows

Moving windows to the center previously did not consider command criteria.
We now operate on matched windows as for other commands.

fixes #2090

8 years agoMerge pull request #2087 from tbu-/pr_sensible_quote_vars
Michael Stapelberg [Mon, 30 Nov 2015 21:55:53 +0000 (22:55 +0100)]
Merge pull request #2087 from tbu-/pr_sensible_quote_vars

Quote the variables in i3-sensible-* correctly

8 years agoQuote the variables in i3-sensible-* correctly 2087/head
Tobias Bucher [Tue, 24 Nov 2015 13:15:31 +0000 (13:15 +0000)]
Quote the variables in i3-sensible-* correctly

Previously, the variables $EDITOR, $PAGER, $TERMINAL and $VISUAL got
shell-expanded twice before executing them.

8 years agotravis: call git fetch --unshallow, so that git describe works
Michael Stapelberg [Mon, 30 Nov 2015 20:08:00 +0000 (21:08 +0100)]
travis: call git fetch --unshallow, so that git describe works

9 years agoMerge pull request #2065 from Airblader/feature-1278
Michael Stapelberg [Mon, 23 Nov 2015 21:27:31 +0000 (22:27 +0100)]
Merge pull request #2065 from Airblader/feature-1278

Migrate i3 rendering to cairo

9 years agoMake freeing surfaces idempotent 2065/head
Ingo Bürk [Wed, 18 Nov 2015 14:32:45 +0000 (15:32 +0100)]
Make freeing surfaces idempotent

If a window with border is set to "border none" and then closed, we would
call cairo_destroy / cairo_surface_destroy twice, causing an assertion
failure in cairo as the objects already had zero references the second
time. We fix this by explicitly setting these objects to NULL.

relates to #1278

9 years agoUse 32-bit visual by default if available.
Ingo Bürk [Tue, 17 Nov 2015 11:50:06 +0000 (12:50 +0100)]
Use 32-bit visual by default if available.

With this patch, we use 32-bit visuals per default whenever it is
available. Otherwise, we fall back to the actual root window's
depth, which will typically be 24-bit.

Before this patch, we already used 32-bit depth for containers with
a window that uses 32-bit. However, this means that we didn't use
32-bit for split parent containers on which decoration is drawn.
For 32-bit windows using transparency, this caused a graphical glitch
because the decoration pixmap behind it would show through. This
behavior is fixed with this change.

relates to #1278

9 years agoDon't create a pixmap for CT_ROOT and CT_OUTPUT containers.
Ingo Bürk [Mon, 16 Nov 2015 22:40:41 +0000 (23:40 +0100)]
Don't create a pixmap for CT_ROOT and CT_OUTPUT containers.

Such containers never require a pixmap anyway. In particular for the __i3
output (used for the scratchpad workspace), this would cause an allocation
error anyway because it can be very big -- so big, in fact, that X cannot
allocate the pixmap for it.

Until now, this error was silently ignored due to the fact that we did not
create the pixmap checked (and asserted its success), but with cairo this
would cause a crash because we'd try to create a surface for a pixmap
which doesn't exist.

relates to #1278

9 years agoParse colors as color_t instead of colorpixel.
Ingo Bürk [Mon, 16 Nov 2015 22:03:39 +0000 (23:03 +0100)]
Parse colors as color_t instead of colorpixel.

With this patch we remove the temporary draw_util_colorpixel_to_color
function we introduced previously by parsing the colors as color_t to
begin with.

relates to #1278

9 years agoSkip drawing for uninitialized surfaces.
Ingo Bürk [Mon, 16 Nov 2015 20:28:33 +0000 (21:28 +0100)]
Skip drawing for uninitialized surfaces.

We return early from drawing functions if the surface to draw to is not
initialized properly. There is no immediate need to do so, at least no
crashes have been observed, but it mirrors the previous behavior a bit
more closely. Furthermore, i3 should not crash due to not being able to
make some rendering call, so this provides some stability.

relates to #1278

9 years agoMigrate i3 rendering to cairo.
Ingo Bürk [Mon, 16 Nov 2015 20:26:06 +0000 (21:26 +0100)]
Migrate i3 rendering to cairo.

This patch migrates all decoration rendering of i3 to cairo. Using the
compile switch CAIRO_SUPPORT, rendering can be switched back to the
previous XCB behavior, just like with the previous migration to cairo
in i3bar.

This patch also fixes a bug in draw_util.c where copying one surface
to another would use incorrect coordinates if the source coordinates
are not 0, 0.

Furthermore, this patch implicitly fixes some minor issues in the
decoration rendering which would be ignored previously due to the fact
that errors would only show up in the event queue, but not cause the
rendering code path to crash. One example is zero-height pixmaps which
are not allowed. Using cairo, these would cause i3 to instantly segfault,
so this patch avoids this.

Lastly, this patch annotates other issues found but not fixed in this patch
using TODO comments, e.g., the zero-height check not working correctly
and the comment that it should probably work the same way for zero-width
pixmaps.

relates to #1278

9 years agoFix draw_util_copy_surface.
Ingo Bürk [Sun, 15 Nov 2015 16:25:12 +0000 (17:25 +0100)]
Fix draw_util_copy_surface.

This patch fixes a bug when copying one surface to another.
Since it only exposes itself when used with non-trivial source
coordinates, it didn't surface before when only used for i3bar.

relates to #1278

9 years agoMove draw_util.c to libi3.
Ingo Bürk [Wed, 11 Nov 2015 22:39:15 +0000 (23:39 +0100)]
Move draw_util.c to libi3.

In order to prepare for using cairo for rendering i3 decorations,
we need to make the draw_util.c from i3bar available via libi3 such
that both i3bar and i3 can use it.

relates to #1278

9 years agoMerge pull request #2078 from acrisci/bug/detect-base16-conid
Michael Stapelberg [Mon, 23 Nov 2015 21:07:08 +0000 (22:07 +0100)]
Merge pull request #2078 from acrisci/bug/detect-base16-conid

Bug: parse con_id base 16

9 years agoMerge pull request #2079 from tyll/contact
Michael Stapelberg [Sun, 22 Nov 2015 19:00:33 +0000 (20:00 +0100)]
Merge pull request #2079 from tyll/contact

Fix contact information

9 years agoFix contact information 2079/head
Till Maas [Sun, 22 Nov 2015 18:57:46 +0000 (19:57 +0100)]
Fix contact information

fixes #2077

9 years agoBug: parse con_id base 16 2078/head
Tony Crisci [Sun, 22 Nov 2015 18:32:21 +0000 (13:32 -0500)]
Bug: parse con_id base 16

Mouse bindings that target the window that was clicked send the command
to the parser with `con_id` of the clicked window serialized base 16
for compatability with FreeBSD. See 7c2842e for explaination.

Set base to 0 for strtol to handle base 16 numbers for that reason.

This allows mouse bindings that target specific windows to work
correctly. Without this change, the focused window is always targetted
rather than the window that was actually clicked.

Regression introduced in b744c5e.

9 years agoMerge pull request #2074 from Airblader/feature-2064
Michael Stapelberg [Sat, 21 Nov 2015 22:04:49 +0000 (23:04 +0100)]
Merge pull request #2074 from Airblader/feature-2064

Support _NET_WM_USER_TIME.

9 years agoSupport _NET_WM_USER_TIME. 2074/head
Ingo Bürk [Fri, 20 Nov 2015 23:19:49 +0000 (00:19 +0100)]
Support _NET_WM_USER_TIME.

With this patch, we support the special value "0" for _NET_WM_USER_TIME
on a window upon managing it, which indicates that the window shall not
be focused.

fixes #2064

9 years agoMerge pull request #2076 from Airblader/feature-document-rects
Michael Stapelberg [Sat, 21 Nov 2015 21:44:31 +0000 (22:44 +0100)]
Merge pull request #2076 from Airblader/feature-document-rects

Document rect, window_rect and deco_rect.

9 years agoDocument rect, window_rect and deco_rect. 2076/head
Ingo Bürk [Sat, 21 Nov 2015 20:52:43 +0000 (21:52 +0100)]
Document rect, window_rect and deco_rect.

9 years agoMerge pull request #2071 from tyll/https
Michael Stapelberg [Thu, 19 Nov 2015 13:10:42 +0000 (14:10 +0100)]
Merge pull request #2071 from tyll/https

Use https if possible

9 years agoUse https if possible 2071/head
Till Maas [Thu, 19 Nov 2015 12:32:35 +0000 (13:32 +0100)]
Use https if possible

git:// and http:// do not protect the integrity of the accessed data.
Therefore use https instead.

9 years agoMerge pull request #2061 from Airblader/bug-2049
Michael Stapelberg [Mon, 16 Nov 2015 08:49:27 +0000 (00:49 -0800)]
Merge pull request #2061 from Airblader/bug-2049

Only grab scrollwheel buttons if necessary

9 years agoAdd i3test::XTEST, add 2 test cases for key bindings
Michael Stapelberg [Mon, 16 Nov 2015 08:25:53 +0000 (09:25 +0100)]
Add i3test::XTEST, add 2 test cases for key bindings

9 years agoRevert "Bugfix: set group mask 1 by default, correctly compare modifiers"
Michael Stapelberg [Sun, 15 Nov 2015 17:00:48 +0000 (18:00 +0100)]
Revert "Bugfix: set group mask 1 by default, correctly compare modifiers"

This reverts commit 9692c1498bcde3489f80b484dbd847a75dfd0405.

That commit accidentally defaulted to group mask 1, but the default
should be to match any group mask, so that having multiple layouts
loaded at the same time works.

fixes #2062

9 years agoOnly grab scrollwheel buttons if necessary. 2061/head
Ingo Bürk [Wed, 11 Nov 2015 19:40:25 +0000 (20:40 +0100)]
Only grab scrollwheel buttons if necessary.

With this patch, we only grab the scrollwheel buttons (4 and 5) when
managing a window if a whole window key binding exists for these buttons.

This allows both of these usecases:
  - Bindings to scrollwheel buttons using --whole-window (see #1701).
  - Scrolling in a window without focusing it if no such binding
    exists (see #2049).

Furthermore, we drop all button grabs and regrab them after a config
reload in order to reevaluate the new bindings correctly.

fixes #2049

9 years agoExtract function to grab buttons when managing a window.
Ingo Bürk [Wed, 11 Nov 2015 19:21:26 +0000 (20:21 +0100)]
Extract function to grab buttons when managing a window.

We refactor the button grabbing into a function to allow the next patch
both to
  - conditionally grab different sets of buttons
  - grab the buttons again when reloading the config.

relates to #2049

9 years agoMerge pull request #2058 from Airblader/feature-rename-flag
Michael Stapelberg [Mon, 9 Nov 2015 20:17:07 +0000 (21:17 +0100)]
Merge pull request #2058 from Airblader/feature-rename-flag

Rename I3BAR_CAIRO to CAIRO_SUPPORT.