Bugfixing update to i3-4.1.1
This commit is contained in:
parent
2072c1cbd5
commit
b144d8ecda
@ -1,9 +1,8 @@
|
||||
# $OpenBSD: Makefile,v 1.21 2011/12/07 09:51:26 dcoppa Exp $
|
||||
# $OpenBSD: Makefile,v 1.22 2011/12/27 09:05:17 dcoppa Exp $
|
||||
|
||||
COMMENT = improved dynamic tiling window manager
|
||||
|
||||
DISTNAME = i3-4.1
|
||||
REVISION = 0
|
||||
DISTNAME = i3-4.1.1
|
||||
CATEGORIES = x11
|
||||
|
||||
EXTRACT_SUFX = .tar.bz2
|
||||
|
@ -1,5 +1,5 @@
|
||||
MD5 (i3-4.1.tar.bz2) = GgXWBWJFBsK0ufEnL9hKWg==
|
||||
RMD160 (i3-4.1.tar.bz2) = G3hYmV4iR+V9dOIxQ4ex/VIxvs8=
|
||||
SHA1 (i3-4.1.tar.bz2) = 6KpR0yAos/B2uXhcS0aRG1C6aZY=
|
||||
SHA256 (i3-4.1.tar.bz2) = O08h2b9m+ORYhSHfpwbYzD/hmZl2pV+1psE6YhoUVaA=
|
||||
SIZE (i3-4.1.tar.bz2) = 564086
|
||||
MD5 (i3-4.1.1.tar.bz2) = JbwpNJtlAAorCvwGVagANQ==
|
||||
RMD160 (i3-4.1.1.tar.bz2) = 6EBzf6CCO7uAeAfspyyTN8FHD/4=
|
||||
SHA1 (i3-4.1.1.tar.bz2) = eckZt83iSv5bfLXrTJbzUDyRQvM=
|
||||
SHA256 (i3-4.1.1.tar.bz2) = vQFZ4PLuT+KGRGTKC4rheojFRcsGAaPmOo1d51RYfBo=
|
||||
SIZE (i3-4.1.1.tar.bz2) = 563305
|
||||
|
@ -1,7 +1,7 @@
|
||||
$OpenBSD: patch-common_mk,v 1.6 2011/12/01 16:00:01 dcoppa Exp $
|
||||
--- common.mk.orig Fri Nov 11 23:41:26 2011
|
||||
+++ common.mk Wed Nov 30 16:51:08 2011
|
||||
@@ -1,90 +1,30 @@
|
||||
$OpenBSD: patch-common_mk,v 1.7 2011/12/27 09:05:17 dcoppa Exp $
|
||||
--- common.mk.orig Sat Dec 24 16:25:15 2011
|
||||
+++ common.mk Tue Dec 27 09:50:07 2011
|
||||
@@ -1,90 +1,28 @@
|
||||
UNAME=$(shell uname)
|
||||
-DEBUG=1
|
||||
+DEBUG=0
|
||||
@ -19,8 +19,8 @@ $OpenBSD: patch-common_mk,v 1.6 2011/12/01 16:00:01 dcoppa Exp $
|
||||
+ SYSCONFDIR=/etc
|
||||
endif
|
||||
# The escaping is absurd, but we need to escape for shell, sed, make, define
|
||||
GIT_VERSION:="4.1 (2011-11-11, branch \\\"release-4.1\\\")"
|
||||
VERSION:=4.1
|
||||
GIT_VERSION:="4.1.1 (2011-12-24, branch \\\"master\\\")"
|
||||
VERSION:=4.1.1
|
||||
|
||||
-ifeq ($(shell which pkg-config 2>/dev/null 1>/dev/null || echo 1),1)
|
||||
-$(error "pkg-config was not found")
|
||||
@ -40,8 +40,8 @@ $OpenBSD: patch-common_mk,v 1.6 2011/12/01 16:00:01 dcoppa Exp $
|
||||
-ldflags_for_lib = $(shell pkg-config --exists 2>/dev/null $(1) && pkg-config --libs $(1) 2>/dev/null || echo -l$(2))
|
||||
-
|
||||
CFLAGS += -std=c99
|
||||
CFLAGS += -pipe
|
||||
CFLAGS += -Wall
|
||||
-CFLAGS += -pipe
|
||||
-CFLAGS += -Wall
|
||||
# unused-function, unused-label, unused-variable are turned on by -Wall
|
||||
# We don’t want unused-parameter because of the use of many callbacks
|
||||
CFLAGS += -Wunused-value
|
||||
@ -96,7 +96,7 @@ $OpenBSD: patch-common_mk,v 1.6 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
# Please test if -Wl,--as-needed works on your platform and send me a patch.
|
||||
# it is known not to work on Darwin (Mac OS X)
|
||||
@@ -99,9 +39,9 @@ LDFLAGS += -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/p
|
||||
@@ -99,9 +37,9 @@ LDFLAGS += -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/p
|
||||
endif
|
||||
|
||||
ifeq ($(UNAME),OpenBSD)
|
||||
@ -108,7 +108,16 @@ $OpenBSD: patch-common_mk,v 1.6 2011/12/01 16:00:01 dcoppa Exp $
|
||||
endif
|
||||
|
||||
ifeq ($(UNAME),FreeBSD)
|
||||
@@ -133,9 +73,6 @@ ifeq ($(COVERAGE),1)
|
||||
@@ -124,18 +62,12 @@ ifeq ($(DEBUG),1)
|
||||
# Extended debugging flags, macros shall be available in gcc
|
||||
CFLAGS += -gdwarf-2
|
||||
CFLAGS += -g3
|
||||
-else
|
||||
-CFLAGS += -O2
|
||||
-CFLAGS += -freorder-blocks-and-partition
|
||||
endif
|
||||
|
||||
ifeq ($(COVERAGE),1)
|
||||
CFLAGS += -fprofile-arcs -ftest-coverage
|
||||
LIBS += -lgcov
|
||||
endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
$OpenBSD: patch-i3_config,v 1.6 2011/12/07 09:51:26 dcoppa Exp $
|
||||
--- i3.config.orig Fri Nov 11 23:41:20 2011
|
||||
+++ i3.config Wed Dec 7 10:35:02 2011
|
||||
$OpenBSD: patch-i3_config,v 1.7 2011/12/27 09:05:17 dcoppa Exp $
|
||||
--- i3.config.orig Sat Dec 24 16:25:08 2011
|
||||
+++ i3.config Tue Dec 27 09:26:06 2011
|
||||
@@ -9,6 +9,8 @@
|
||||
# layout, use the i3-config-wizard
|
||||
#
|
||||
@ -35,8 +35,8 @@ $OpenBSD: patch-i3_config,v 1.6 2011/12/07 09:51:26 dcoppa Exp $
|
||||
+# Start i3bar to display a workspace bar
|
||||
+# XXX: i3status has not been ported to OpenBSD yet
|
||||
bar {
|
||||
- status_command i3status
|
||||
+ status_command /usr/bin/true
|
||||
- status_command i3status
|
||||
+ status_command /usr/bin/true
|
||||
}
|
||||
-
|
||||
-#######################################################################
|
||||
|
@ -1,6 +1,6 @@
|
||||
$OpenBSD: patch-i3_config_keycodes,v 1.3 2011/12/07 09:51:26 dcoppa Exp $
|
||||
--- i3.config.keycodes.orig Fri Nov 11 23:41:20 2011
|
||||
+++ i3.config.keycodes Wed Dec 7 10:35:13 2011
|
||||
$OpenBSD: patch-i3_config_keycodes,v 1.4 2011/12/27 09:05:17 dcoppa Exp $
|
||||
--- i3.config.keycodes.orig Sat Dec 24 16:25:08 2011
|
||||
+++ i3.config.keycodes Tue Dec 27 09:30:43 2011
|
||||
@@ -17,13 +17,13 @@ font -misc-fixed-medium-r-normal--13-120-75-75-C-70-is
|
||||
floating_modifier $mod
|
||||
|
||||
@ -26,6 +26,6 @@ $OpenBSD: patch-i3_config_keycodes,v 1.3 2011/12/07 09:51:26 dcoppa Exp $
|
||||
+# Start i3bar to display a workspace bar
|
||||
+# XXX: i3status has not been ported to OpenBSD yet
|
||||
bar {
|
||||
- status_command i3status
|
||||
+ status_command /usr/bin/true
|
||||
- status_command i3status
|
||||
+ status_command /usr/bin/true
|
||||
}
|
||||
|
11
x11/i3/patches/patch-i3bar_src_child_c
Normal file
11
x11/i3/patches/patch-i3bar_src_child_c
Normal file
@ -0,0 +1,11 @@
|
||||
$OpenBSD: patch-i3bar_src_child_c,v 1.1 2011/12/27 09:05:17 dcoppa Exp $
|
||||
--- i3bar/src/child.c.orig Tue Dec 27 09:42:01 2011
|
||||
+++ i3bar/src/child.c Tue Dec 27 09:42:12 2011
|
||||
@@ -80,7 +80,6 @@ void stdin_io_cb(struct ev_loop *loop, ev_io *watcher,
|
||||
}
|
||||
|
||||
/* end of file, kill the watcher */
|
||||
- ELOG("stdin: received EOF\n");
|
||||
cleanup();
|
||||
draw_bars();
|
||||
return;
|
@ -1,21 +0,0 @@
|
||||
$OpenBSD: patch-include_con_h,v 1.2 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Bugfix: retain absolute window position and size when changing
|
||||
floating borders (git commit 970d11709e99aab7db13a2fd28a758a68a4137dc)
|
||||
|
||||
--- include/con.h.orig Fri Nov 11 23:41:20 2011
|
||||
+++ include/con.h Thu Dec 1 13:45:23 2011
|
||||
@@ -234,6 +234,13 @@ Rect con_border_style_rect(Con *con);
|
||||
int con_border_style(Con *con);
|
||||
|
||||
/**
|
||||
+ * Sets the given border style on con, correctly keeping the position/size of a
|
||||
+ * floating window.
|
||||
+ *
|
||||
+ */
|
||||
+void con_set_border_style(Con *con, int border_style);
|
||||
+
|
||||
+/**
|
||||
* This function changes the layout of a given container. Use it to handle
|
||||
* special cases like changing a whole workspace to stacked/tabbed (creates a
|
||||
* new split container before).
|
@ -1,25 +0,0 @@
|
||||
$OpenBSD: patch-include_ewmh_h,v 1.1 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Do not set the _NET_WM_WORKAREA hint: fix incorrect transient
|
||||
geometry with wxwidgets
|
||||
(upstream git commit d25e77ce7597bf0736c610a04185c8c27694c890)
|
||||
|
||||
--- include/ewmh.h.orig Fri Nov 11 23:41:20 2011
|
||||
+++ include/ewmh.h Thu Dec 1 14:07:37 2011
|
||||
@@ -29,16 +29,6 @@ void ewmh_update_current_desktop();
|
||||
void ewmh_update_active_window(xcb_window_t window);
|
||||
|
||||
/**
|
||||
- * Updates the workarea for each desktop.
|
||||
- *
|
||||
- * EWMH: Contains a geometry for each desktop. These geometries specify an area
|
||||
- * that is completely contained within the viewport. Work area SHOULD be used by
|
||||
- * desktop applications to place desktop icons appropriately.
|
||||
- *
|
||||
- */
|
||||
-void ewmh_update_workarea();
|
||||
-
|
||||
-/**
|
||||
* Updates the _NET_CLIENT_LIST_STACKING hint. Necessary to move tabs in
|
||||
* Chromium correctly.
|
||||
*
|
@ -1,14 +0,0 @@
|
||||
$OpenBSD: patch-include_xcursor_h,v 1.1 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Fix prototype (git commit 0ea64ae404c38391aa50ec91dbcebdbda9cac833)
|
||||
|
||||
--- include/xcursor.h.orig Thu Dec 1 13:31:31 2011
|
||||
+++ include/xcursor.h Thu Dec 1 13:32:46 2011
|
||||
@@ -35,6 +35,6 @@ int xcursor_get_xcb_cursor(enum xcursor_cursor_t c);
|
||||
* races might occur (even though we flush the Xlib connection).
|
||||
*
|
||||
*/
|
||||
-void xcursor_set_root_cursor();
|
||||
+void xcursor_set_root_cursor(int cursor_id);
|
||||
|
||||
#endif
|
@ -1,15 +1,15 @@
|
||||
$OpenBSD: patch-man_i3-migrate-config-to-v4_1,v 1.2 2011/12/01 16:00:01 dcoppa Exp $
|
||||
$OpenBSD: patch-man_i3-migrate-config-to-v4_1,v 1.3 2011/12/27 09:05:17 dcoppa Exp $
|
||||
|
||||
fix fatal error
|
||||
|
||||
--- man/i3-migrate-config-to-v4.1.orig Wed Nov 30 16:43:58 2011
|
||||
+++ man/i3-migrate-config-to-v4.1 Wed Nov 30 16:44:25 2011
|
||||
--- man/i3-migrate-config-to-v4.1.orig Tue Dec 27 09:32:57 2011
|
||||
+++ man/i3-migrate-config-to-v4.1 Tue Dec 27 09:33:26 2011
|
||||
@@ -7,7 +7,7 @@
|
||||
.\" Source: i3 4.1
|
||||
.\" Source: i3 4.1.1
|
||||
.\" Language: English
|
||||
.\"
|
||||
-.TH "I3\-MIGRATE\-CONFIG\" "1" "11/11/2011" "i3 4\&.1" "i3 Manual"
|
||||
+.TH "I3\-MIGRATE\-CONFIG" "1" "11/11/2011" "i3 4\&.1" "i3 Manual"
|
||||
-.TH "I3\-MIGRATE\-CONFIG\" "1" "12/24/2011" "i3 4\&.1\&.1" "i3 Manual"
|
||||
+.TH "I3\-MIGRATE\-CONFIG" "1" "12/24/2011" "i3 4\&.1\&.1" "i3 Manual"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
@ -1,7 +1,7 @@
|
||||
$OpenBSD: patch-src_cfgparse_y,v 1.4 2011/12/01 16:00:01 dcoppa Exp $
|
||||
--- src/cfgparse.y.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/cfgparse.y Wed Nov 30 17:01:02 2011
|
||||
@@ -284,8 +284,8 @@ static void start_configerror_nagbar(const char *confi
|
||||
$OpenBSD: patch-src_cfgparse_y,v 1.5 2011/12/27 09:05:17 dcoppa Exp $
|
||||
--- src/cfgparse.y.orig Sat Dec 24 16:25:08 2011
|
||||
+++ src/cfgparse.y Tue Dec 27 09:24:53 2011
|
||||
@@ -286,8 +286,8 @@ static void start_configerror_nagbar(const char *confi
|
||||
if (configerror_pid == 0) {
|
||||
char *editaction,
|
||||
*pageraction;
|
||||
|
@ -1,54 +0,0 @@
|
||||
$OpenBSD: patch-src_click_c,v 1.4 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Bugfix: fix resizing for v-split containers in h-split containers
|
||||
(upstream git commit 59283cce93dc1e468e3ad714a2f561aba8575180)
|
||||
|
||||
--- src/click.c.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/click.c Thu Dec 1 14:01:12 2011
|
||||
@@ -26,7 +26,7 @@ typedef enum { CLICK_BORDER = 0, CLICK_DECORATION = 1,
|
||||
*
|
||||
*/
|
||||
static bool tiling_resize_for_border(Con *con, border_t border, const xcb_button_press_event_t *event) {
|
||||
- DLOG("border = %d\n", border);
|
||||
+ DLOG("border = %d, con = %p\n", border, con);
|
||||
char way = (border == BORDER_TOP || border == BORDER_LEFT ? 'p' : 'n');
|
||||
orientation_t orientation = (border == BORDER_TOP || border == BORDER_BOTTOM ? VERT : HORIZ);
|
||||
|
||||
@@ -38,6 +38,7 @@ static bool tiling_resize_for_border(Con *con, border_
|
||||
resize_con->parent->orientation != orientation)
|
||||
resize_con = resize_con->parent;
|
||||
|
||||
+ DLOG("resize_con = %p\n", resize_con);
|
||||
if (resize_con->type != CT_WORKSPACE &&
|
||||
resize_con->type != CT_FLOATING_CON &&
|
||||
resize_con->parent->orientation == orientation) {
|
||||
@@ -51,6 +52,8 @@ static bool tiling_resize_for_border(Con *con, border_
|
||||
first = second;
|
||||
second = tmp;
|
||||
}
|
||||
+ DLOG("first = %p, second = %p, resize_con = %p\n",
|
||||
+ first, second, resize_con);
|
||||
}
|
||||
|
||||
if (first == NULL || second == NULL) {
|
||||
@@ -130,13 +133,14 @@ static bool tiling_resize(Con *con, const xcb_button_p
|
||||
/* Since the container might either be the child *or* already a split
|
||||
* container (in the case of a nested split container), we need to make
|
||||
* sure that we are dealing with the split container here. */
|
||||
- if (con_is_leaf(con) && con->parent->type == CT_CON)
|
||||
- con = con->parent;
|
||||
+ Con *check_con = con;
|
||||
+ if (con_is_leaf(check_con) && check_con->parent->type == CT_CON)
|
||||
+ check_con = check_con->parent;
|
||||
|
||||
- if ((con->layout == L_STACKED ||
|
||||
- con->layout == L_TABBED ||
|
||||
- con->orientation == HORIZ) &&
|
||||
- con_num_children(con) > 1) {
|
||||
+ if ((check_con->layout == L_STACKED ||
|
||||
+ check_con->layout == L_TABBED ||
|
||||
+ check_con->orientation == HORIZ) &&
|
||||
+ con_num_children(check_con) > 1) {
|
||||
DLOG("Not handling this resize, this container has > 1 child.\n");
|
||||
return false;
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
$OpenBSD: patch-src_cmdparse_y,v 1.2 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Bugfix: fix crash on '[class="i3bar"] focus'
|
||||
(upstream git commit 31acb91d906cecb94d791609917530545118eb3b)
|
||||
|
||||
Bugfix: retain absolute window position and size when changing
|
||||
floating borders (git commit 970d11709e99aab7db13a2fd28a758a68a4137dc)
|
||||
|
||||
Bugfix: fix 'resize' command in nested containers
|
||||
(upstream git commit 626e3efb48cdf78dcda31bec61bcb8bcb9bf2940)
|
||||
|
||||
--- src/cmdparse.y.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/cmdparse.y Thu Dec 1 14:03:16 2011
|
||||
@@ -450,6 +450,10 @@ focus:
|
||||
int count = 0;
|
||||
TAILQ_FOREACH(current, &owindows, owindows) {
|
||||
Con *ws = con_get_workspace(current->con);
|
||||
+ /* If no workspace could be found, this was a dock window.
|
||||
+ * Just skip it, you cannot focus dock windows. */
|
||||
+ if (!ws)
|
||||
+ continue;
|
||||
|
||||
/* If the container is not on the current workspace,
|
||||
* workspace_show() will switch to a different workspace and (if
|
||||
@@ -719,10 +723,12 @@ border:
|
||||
|
||||
TAILQ_FOREACH(current, &owindows, owindows) {
|
||||
printf("matching: %p / %s\n", current->con, current->con->name);
|
||||
+ int border_style = current->con->border_style;
|
||||
if ($2 == TOK_TOGGLE) {
|
||||
- current->con->border_style++;
|
||||
- current->con->border_style %= 3;
|
||||
- } else current->con->border_style = $2;
|
||||
+ border_style++;
|
||||
+ border_style %= 3;
|
||||
+ } else border_style = $2;
|
||||
+ con_set_border_style(current->con, border_style);
|
||||
}
|
||||
|
||||
tree_render();
|
||||
@@ -961,6 +967,16 @@ resize:
|
||||
while (current->parent->layout == L_STACKED ||
|
||||
current->parent->layout == L_TABBED)
|
||||
current = current->parent;
|
||||
+
|
||||
+ /* Then further go up until we find one with the matching orientation. */
|
||||
+ orientation_t search_orientation =
|
||||
+ (direction == TOK_LEFT || direction == TOK_RIGHT ? HORIZ : VERT);
|
||||
+
|
||||
+ while (current->type != CT_WORKSPACE &&
|
||||
+ current->type != CT_FLOATING_CON &&
|
||||
+ current->parent->orientation != search_orientation)
|
||||
+ current = current->parent;
|
||||
+
|
||||
/* get the default percentage */
|
||||
int children = con_num_children(current->parent);
|
||||
Con *other;
|
@ -1,72 +0,0 @@
|
||||
$OpenBSD: patch-src_con_c,v 1.2 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Bugfix: retain absolute window position and size when changing
|
||||
floating borders (git commit 970d11709e99aab7db13a2fd28a758a68a4137dc)
|
||||
|
||||
Do not set the _NET_WM_WORKAREA hint: fix incorrect transient
|
||||
geometry with wxwidgets
|
||||
(upstream git commit d25e77ce7597bf0736c610a04185c8c27694c890)
|
||||
|
||||
--- src/con.c.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/con.c Thu Dec 1 14:07:37 2011
|
||||
@@ -942,6 +942,52 @@ int con_border_style(Con *con) {
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Sets the given border style on con, correctly keeping the position/size of a
|
||||
+ * floating window.
|
||||
+ *
|
||||
+ */
|
||||
+void con_set_border_style(Con *con, int border_style) {
|
||||
+ /* Handle the simple case: non-floating containerns */
|
||||
+ if (!con_is_floating(con)) {
|
||||
+ con->border_style = border_style;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* For floating containers, we want to keep the position/size of the
|
||||
+ * *window* itself. Since the window size is rendered based on the
|
||||
+ * container which it is in, we first remove the border/decoration specific
|
||||
+ * amount of pixels from parent->rect, change the border, then add the new
|
||||
+ * border/decoration specific pixels. */
|
||||
+ DLOG("This is a floating container\n");
|
||||
+
|
||||
+ /* Get current border/decoration pixel values. */
|
||||
+ int deco_height =
|
||||
+ (con->border_style == BS_NORMAL ? config.font.height + 5 : 0);
|
||||
+ Rect bsr = con_border_style_rect(con);
|
||||
+ Con *parent = con->parent;
|
||||
+
|
||||
+ con->rect.x += bsr.x;
|
||||
+ con->rect.y += bsr.y;
|
||||
+ con->rect.width += bsr.width;
|
||||
+ con->rect.height += bsr.height;
|
||||
+
|
||||
+ /* Change the border style, get new border/decoration values. */
|
||||
+ con->border_style = border_style;
|
||||
+ bsr = con_border_style_rect(con);
|
||||
+ deco_height = (con->border_style == BS_NORMAL ? config.font.height + 5 : 0);
|
||||
+
|
||||
+ con->rect.x -= bsr.x;
|
||||
+ con->rect.y -= bsr.y;
|
||||
+ con->rect.width -= bsr.width;
|
||||
+ con->rect.height -= bsr.height;
|
||||
+
|
||||
+ parent->rect.x = con->rect.x;
|
||||
+ parent->rect.y = con->rect.y - deco_height;
|
||||
+ parent->rect.width = con->rect.width;
|
||||
+ parent->rect.height = con->rect.height + deco_height;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
* This function changes the layout of a given container. Use it to handle
|
||||
* special cases like changing a whole workspace to stacked/tabbed (creates a
|
||||
* new split container before).
|
||||
@@ -1023,7 +1069,6 @@ static void con_on_remove_child(Con *con) {
|
||||
LOG("Closing old workspace (%p / %s), it is empty\n", con, con->name);
|
||||
tree_close(con, DONT_KILL_WINDOW, false, false);
|
||||
ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"empty\"}");
|
||||
- ewmh_update_workarea();
|
||||
}
|
||||
return;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
$OpenBSD: patch-src_config_c,v 1.6 2011/12/01 16:00:01 dcoppa Exp $
|
||||
--- src/config.c.orig Wed Nov 30 16:44:46 2011
|
||||
+++ src/config.c Wed Nov 30 16:45:07 2011
|
||||
@@ -210,7 +210,7 @@ static char *get_config_path(const char *override_conf
|
||||
$OpenBSD: patch-src_config_c,v 1.7 2011/12/27 09:05:17 dcoppa Exp $
|
||||
--- src/config.c.orig Sat Dec 24 16:25:08 2011
|
||||
+++ src/config.c Tue Dec 27 09:24:53 2011
|
||||
@@ -218,7 +218,7 @@ static char *get_config_path(const char *override_conf
|
||||
|
||||
/* 4: check for $XDG_CONFIG_DIRS/i3/config */
|
||||
if ((xdg_config_dirs = getenv("XDG_CONFIG_DIRS")) == NULL)
|
||||
|
@ -1,49 +0,0 @@
|
||||
$OpenBSD: patch-src_handlers_c,v 1.4 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Bugfix: ignore EnterNotify events to prevent wrong focus in complex
|
||||
tabbed/stacked layouts
|
||||
(upstream git commit bd4b240d56df08bc255a09c9cb0d98b457c785dc)
|
||||
|
||||
Bugfix: skip dock clients when handling FocusIn events
|
||||
(upstream git commit 5f8d719835832a91232d0331a25512e9a0853494)
|
||||
|
||||
--- src/handlers.c.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/handlers.c Thu Dec 1 13:58:48 2011
|
||||
@@ -452,10 +452,20 @@ static int handle_screen_change(xcb_generic_event_t *e
|
||||
*
|
||||
*/
|
||||
static int handle_unmap_notify_event(xcb_unmap_notify_event_t *event) {
|
||||
- // XXX: this is commented out because in src/x.c we disable EnterNotify events
|
||||
- /* we need to ignore EnterNotify events which will be generated because a
|
||||
- * different window is visible now */
|
||||
- //add_ignore_event(event->sequence, XCB_ENTER_NOTIFY);
|
||||
+ /* If the client (as opposed to i3) destroyed or unmapped a window, an
|
||||
+ * EnterNotify event will follow (indistinguishable from an EnterNotify
|
||||
+ * event caused by moving your mouse), causing i3 to set focus to whichever
|
||||
+ * window is now visible.
|
||||
+ *
|
||||
+ * In a complex stacked or tabbed layout (take two v-split containers in a
|
||||
+ * tabbed container), when the bottom window in tab2 is closed, the bottom
|
||||
+ * window of tab1 is visible instead. X11 will thus send an EnterNotify
|
||||
+ * event for the bottom window of tab1, while the focus should be set to
|
||||
+ * the remaining window of tab2.
|
||||
+ *
|
||||
+ * Therefore, we ignore all EnterNotify events which have the same sequence
|
||||
+ * as an UnmapNotify event. */
|
||||
+ add_ignore_event(event->sequence, XCB_ENTER_NOTIFY);
|
||||
|
||||
DLOG("UnmapNotify for 0x%08x (received from 0x%08x), serial %d\n", event->window, event->event, event->sequence);
|
||||
Con *con = con_by_window_id(event->window);
|
||||
@@ -965,6 +975,12 @@ static int handle_focus_in(xcb_focus_in_event_t *event
|
||||
|
||||
if (focused_id == event->event) {
|
||||
DLOG("focus matches the currently focused window, not doing anything\n");
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ /* Skip dock clients, they cannot get the i3 focus. */
|
||||
+ if (con->parent->type == CT_DOCKAREA) {
|
||||
+ DLOG("This is a dock client, not focusing.\n");
|
||||
return 1;
|
||||
}
|
||||
|
@ -1,54 +0,0 @@
|
||||
$OpenBSD: patch-src_randr_c,v 1.4 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Bugfix: don't create a workspace named "back_and_forth" on
|
||||
startup (unintended behaviour)
|
||||
(upstream git commit d686f2f8731a1b7a9c4524a30d4413200d768621)
|
||||
|
||||
Do not set the _NET_WM_WORKAREA hint: fix incorrect transient
|
||||
geometry with wxwidgets
|
||||
(upstream git commit d25e77ce7597bf0736c610a04185c8c27694c890)
|
||||
|
||||
Bugfix: fix crash at startup when RandR is not present
|
||||
(upstream git commit 227a58b0c30a438e36ee8318c0d20079777f063d)
|
||||
|
||||
--- src/randr.c.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/randr.c Thu Dec 1 14:07:37 2011
|
||||
@@ -420,11 +420,12 @@ void init_ws_for_output(Output *output, Con *content)
|
||||
continue;
|
||||
DLOG("relevant command = %s\n", bind->command);
|
||||
char *target = bind->command + strlen("workspace ");
|
||||
- /* We check if this is the workspace next/prev command. Beware: The
|
||||
- * workspace names "next" and "prev" are OK, so we check before
|
||||
- * stripping the double quotes */
|
||||
+ /* We check if this is the workspace next/prev/back_and_forth command.
|
||||
+ * Beware: The workspace names "next", "prev" and "back_and_forth" are
|
||||
+ * OK, so we check before stripping the double quotes */
|
||||
if (strncasecmp(target, "next", strlen("next")) == 0 ||
|
||||
- strncasecmp(target, "prev", strlen("prev")) == 0)
|
||||
+ strncasecmp(target, "prev", strlen("prev")) == 0 ||
|
||||
+ strncasecmp(target, "back_and_forth", strlen("back_and_forth")) == 0)
|
||||
continue;
|
||||
if (*target == '"')
|
||||
target++;
|
||||
@@ -807,8 +808,6 @@ void randr_query_outputs() {
|
||||
disable_randr(conn);
|
||||
}
|
||||
|
||||
- ewmh_update_workarea();
|
||||
-
|
||||
/* Just go through each active output and assign one workspace */
|
||||
TAILQ_FOREACH(output, &outputs, outputs) {
|
||||
if (!output->active)
|
||||
@@ -845,9 +844,10 @@ void randr_init(int *event_base) {
|
||||
const xcb_query_extension_reply_t *extreply;
|
||||
|
||||
extreply = xcb_get_extension_data(conn, &xcb_randr_id);
|
||||
- if (!extreply->present)
|
||||
+ if (!extreply->present) {
|
||||
disable_randr(conn);
|
||||
- else randr_query_outputs();
|
||||
+ return;
|
||||
+ } else randr_query_outputs();
|
||||
|
||||
if (event_base != NULL)
|
||||
*event_base = extreply->first_event;
|
@ -1,35 +0,0 @@
|
||||
$OpenBSD: patch-src_render_c,v 1.1 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Bugfix: fix fullscreen with floating windows
|
||||
(upstream git commit 61b8a62132bf07682b79902f5ea9f712bca000c9)
|
||||
|
||||
--- src/render.c.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/render.c Thu Dec 1 13:30:55 2011
|
||||
@@ -236,6 +236,27 @@ void render_con(Con *con, bool render_fullscreen) {
|
||||
Con *content = output_get_content(output);
|
||||
Con *workspace = TAILQ_FIRST(&(content->focus_head));
|
||||
|
||||
+ /* Check for (floating!) fullscreen nodes */
|
||||
+ /* XXX: This code duplication is unfortunate. Keep in mind to fix
|
||||
+ * this when we clean up the whole render.c */
|
||||
+ Con *fullscreen = NULL;
|
||||
+ fullscreen = con_get_fullscreen_con(workspace, CF_OUTPUT);
|
||||
+ if (fullscreen) {
|
||||
+ /* Either the fullscreen window is inside the floating
|
||||
+ * container, then we need to render and raise it now... */
|
||||
+ if (con_inside_floating(fullscreen)) {
|
||||
+ fullscreen->rect = output->rect;
|
||||
+ x_raise_con(fullscreen);
|
||||
+ render_con(fullscreen, true);
|
||||
+ continue;
|
||||
+ } else {
|
||||
+ /* ...or it's a tiling window, in which case the floating
|
||||
+ * windows should not overlap it, so we skip rendering this
|
||||
+ * output. */
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
Con *child;
|
||||
TAILQ_FOREACH(child, &(workspace->floating_head), floating_windows) {
|
||||
DLOG("floating child at (%d,%d) with %d x %d\n", child->rect.x, child->rect.y, child->rect.width, child->rect.height);
|
@ -1,17 +0,0 @@
|
||||
$OpenBSD: patch-src_workspace_c,v 1.4 2011/12/01 16:00:01 dcoppa Exp $
|
||||
|
||||
Do not set the _NET_WM_WORKAREA hint: fix incorrect transient
|
||||
geometry with wxwidgets
|
||||
(upstream git commit d25e77ce7597bf0736c610a04185c8c27694c890)
|
||||
|
||||
--- src/workspace.c.orig Fri Nov 11 23:41:20 2011
|
||||
+++ src/workspace.c Thu Dec 1 14:07:37 2011
|
||||
@@ -240,8 +240,6 @@ static void _workspace_show(Con *workspace, bool chang
|
||||
}
|
||||
|
||||
/* Update the EWMH hints */
|
||||
- if (changed_num_workspaces)
|
||||
- ewmh_update_workarea();
|
||||
ewmh_update_current_desktop();
|
||||
|
||||
ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}");
|
Loading…
Reference in New Issue
Block a user