Bugfixing update to i3-4.1.1

This commit is contained in:
dcoppa 2011-12-27 09:05:17 +00:00
parent 2072c1cbd5
commit b144d8ecda
19 changed files with 61 additions and 440 deletions

View File

@ -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

View File

@ -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

View File

@ -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 dont 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

View File

@ -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
}
-
-#######################################################################

View File

@ -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
}

View 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;

View File

@ -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).

View File

@ -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.
*

View File

@ -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

View File

@ -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
.\" -----------------------------------------------------------------

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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)

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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\"}");