On Wed, May 15, 2013 at 09:41:11PM +0200, David Coppa wrote:
> 
> The diff below updates i3 to the latest version (4.5.1).
> works for me on my amd64 laptop and on my i386 netbook.

I might be doing something wrong.. but patch-src_x_c and
patch-src_config_c don't apply cleanly.

applying with "patch -p0 -E < ~/i3.diff"

cat'ed .rej files below: 

@@ -1,80 +1,7 @@
 $OpenBSD: patch-src_config_c,v 1.10 2013/01/25 10:34:02 dcoppa Exp $
-
-From 2eb4ed95bcd5f039014db51eb56f0ac411401fa5 Mon Sep 17 00:00:00 2001
-From: Michael Stapelberg <[email protected]>
-Date: Thu, 24 Jan 2013 13:44:01 +0000
-Subject: Bugfix: fix "overlapping" --release key bindings (Thanks phlux)
-
---- src/config.c.orig  Wed Dec 12 00:08:17 2012
-+++ src/config.c       Fri Jan 25 07:41:46 2013
-@@ -31,7 +31,7 @@ void ungrab_all_keys(xcb_connection_t *conn) {
- }
- 
- static void grab_keycode_for_binding(xcb_connection_t *conn, Binding *bind, 
uint32_t keycode) {
--    DLOG("Grabbing %d\n", keycode);
-+    DLOG("Grabbing %d with modifiers %d (with mod_mask_lock %d)\n", keycode, 
bind->mods, bind->mods | XCB_MOD_MASK_LOCK);
-     /* Grab the key in all combinations */
-     #define GRAB_KEY(modifier) \
-         do { \
-@@ -65,14 +65,6 @@ Binding *get_binding(uint16_t modifiers, bool key_rele
-             if (bind->release == B_UPON_KEYRELEASE_IGNORE_MODS)
-                 bind->release = B_UPON_KEYRELEASE;
-         }
--
--        /* Then we transition the KeyRelease bindings into a state where the
--         * modifiers no longer matter for the KeyRelease event so that users
--         * can release the modifier key before releasing the actual key. */
--        TAILQ_FOREACH(bind, bindings, bindings) {
--            if (bind->release == B_UPON_KEYRELEASE && !key_release)
--                bind->release = B_UPON_KEYRELEASE_IGNORE_MODS;
--        }
-     }
- 
-     TAILQ_FOREACH(bind, bindings, bindings) {
-@@ -84,23 +76,33 @@ Binding *get_binding(uint16_t modifiers, bool key_rele
-              !key_release))
-             continue;
- 
--        /* Check if the binding is for a KeyPress or a KeyRelease event */
--        if ((bind->release == B_UPON_KEYPRESS && key_release) ||
--            (bind->release >= B_UPON_KEYRELEASE && !key_release))
--            continue;
--
-         /* If a symbol was specified by the user, we need to look in
-          * the array of translated keycodes for the event???s keycode */
-         if (bind->symbol != NULL) {
-             if (memmem(bind->translated_to,
-                        bind->number_keycodes * sizeof(xcb_keycode_t),
--                       &keycode, sizeof(xcb_keycode_t)) != NULL)
--                break;
-+                       &keycode, sizeof(xcb_keycode_t)) == NULL)
-+                continue;
-         } else {
-             /* This case is easier: The user specified a keycode */
--            if (bind->keycode == keycode)
--                break;
-+            if (bind->keycode != keycode)
-+                continue;
-         }
-+
-+        /* If this keybinding is a KeyRelease binding, it matches the key 
which
-+         * the user pressed. We therefore mark it as
-+         * B_UPON_KEYRELEASE_IGNORE_MODS for later, so that the user can
-+         * release the modifiers before the actual key and the KeyRelease will
-+         * still be matched. */
-+        if (bind->release == B_UPON_KEYRELEASE && !key_release)
-+            bind->release = B_UPON_KEYRELEASE_IGNORE_MODS;
-+
-+        /* Check if the binding is for a KeyPress or a KeyRelease event */
-+        if ((bind->release == B_UPON_KEYPRESS && key_release) ||
-+            (bind->release >= B_UPON_KEYRELEASE && !key_release))
-+            continue;
-+
-+        break;
-     }
- 
-     return (bind == TAILQ_END(bindings) ? NULL : bind);
-@@ -254,7 +256,7 @@ static char *get_config_path(const char *override_conf
+--- src/config.c.orig  Mon Mar 18 22:43:36 2013
++++ src/config.c       Mon May 13 08:27:23 2013
+@@ -256,7 +256,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,30 +1,10 @@
 $OpenBSD: patch-src_x_c,v 1.11 2012/12/27 19:58:05 dcoppa Exp $
 
-Bugfix: draw right tab border for split containers
-(upstream git commit ae605bdd394bdf83a8015ac626b222fd40e35b04)
-
 OpenBSD lacks POSIX shared memory support (shm_open() and friends)
 
---- src/x.c.orig       Wed Dec 12 00:08:17 2012
-+++ src/x.c    Thu Dec 27 15:19:49 2012
-@@ -505,7 +505,7 @@ void x_draw_decoration(Con *con) {
-                 con->deco_rect.width - 2);
-         free(title);
- 
--        goto copy_pixmaps;
-+        goto after_title;
-     }
- 
-     if (win->name == NULL)
-@@ -533,6 +533,7 @@ void x_draw_decoration(Con *con) {
-             con->deco_rect.x + 2 + indent_px, con->deco_rect.y + 
text_offset_y,
-             con->deco_rect.width - 2 - indent_px);
- 
-+after_title:
-     /* Since we don???t clip the text at all, it might in some cases be 
painted
-      * on the border pixels on the right side of a window. Therefore, we draw
-      * the right border again after rendering the text (and the unconnected
-@@ -1057,8 +1058,10 @@ void x_set_i3_atoms(void) {
+--- src/x.c.orig       Mon Mar 18 22:43:36 2013
++++ src/x.c    Mon May 13 08:27:23 2013
+@@ -1064,8 +1064,10 @@ void x_set_i3_atoms(void) {
      xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A_I3_PID, 
XCB_ATOM_CARDINAL, 32, 1, &pid);
      xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A_I3_CONFIG_PATH, 
A_UTF8_STRING, 8,
                          strlen(current_configpath), current_configpath);

Reply via email to