summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Matteo Bernardini2023-09-22 10:01:04 +0200
committer Matteo Bernardini2024-03-23 10:43:21 +0100
commit91b99a4f13630fb78f168c18ee4d9228eacb7dcc (patch)
tree0a77e0ca29278d7ab651554d576c603559fe841d
parentecfbf772e938e6dfdc25bbce4ec902ad04952af9 (diff)
downloadslackbuilds-openbox.tar.gz
desktop/openbox: Add some patches from debian/archlinux.openbox
These are to avoid issues when switching focus Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
-rw-r--r--desktop/openbox/openbox.SlackBuild2
-rw-r--r--desktop/openbox/patches/917204_undecorated_maximized_no_border.patch22
-rw-r--r--desktop/openbox/patches/9ed6fdd71890c5cc43747f105382d5677e5d37e7.patch50
-rw-r--r--desktop/openbox/patches/debian-887908.patch31
4 files changed, 105 insertions, 0 deletions
diff --git a/desktop/openbox/openbox.SlackBuild b/desktop/openbox/openbox.SlackBuild
index 36d3f279e6..80501d9f46 100644
--- a/desktop/openbox/openbox.SlackBuild
+++ b/desktop/openbox/openbox.SlackBuild
@@ -102,6 +102,8 @@ find -L . \
# Convert openbox-xdg-autostart from python2 to python3
patch -p1 < $CWD/py2-to-py3.patch
+for i in $CWD/patches/* ; do patch -p1 < $i ; done
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
diff --git a/desktop/openbox/patches/917204_undecorated_maximized_no_border.patch b/desktop/openbox/patches/917204_undecorated_maximized_no_border.patch
new file mode 100644
index 0000000000..915cc1ea9a
--- /dev/null
+++ b/desktop/openbox/patches/917204_undecorated_maximized_no_border.patch
@@ -0,0 +1,22 @@
+Description: Removed top border on undecorated maximized windows
+Author: Valentin Blot <debian-devel@valentinblot.org>
+Origin: other
+Bug-Debian: https://bugs.debian.org/917204
+Forwarded: no
+Last-Update: 2018-12-23
+
+--- a/openbox/frame.c
++++ b/openbox/frame.c
+@@ -585,12 +585,6 @@ void frame_adjust_area(ObFrame *self, gb
+
+ if (self->decorations & OB_FRAME_DECOR_TITLEBAR)
+ self->size.top += ob_rr_theme->title_height + self->bwidth;
+- else if (self->max_horz && self->max_vert) {
+- /* A maximized and undecorated window needs a border on the
+- top of the window to let the user still undecorate/unmaximize the
+- window via the client menu. */
+- self->size.top += self->bwidth;
+- }
+
+ if (self->decorations & OB_FRAME_DECOR_HANDLE &&
+ ob_rr_theme->handle_height > 0)
diff --git a/desktop/openbox/patches/9ed6fdd71890c5cc43747f105382d5677e5d37e7.patch b/desktop/openbox/patches/9ed6fdd71890c5cc43747f105382d5677e5d37e7.patch
new file mode 100644
index 0000000000..ef68d31213
--- /dev/null
+++ b/desktop/openbox/patches/9ed6fdd71890c5cc43747f105382d5677e5d37e7.patch
@@ -0,0 +1,50 @@
+From 9ed6fdd71890c5cc43747f105382d5677e5d37e7 Mon Sep 17 00:00:00 2001
+From: pldubouilh <pldubouilh@gmail.com>
+Date: Fri, 17 Mar 2023 18:23:47 +0100
+Subject: [PATCH] Fix list traversal issue in client_calc_layer
+
+The calls to client_calc_layer_internal can modify stacking_list, which
+can cause us to follow dangling ->next pointers (either by the pointer
+itself already being freed, or it pointing to a freed area). Avoid this
+by copying the list first, the goal is to visit every client in the list
+once so this should be fine.
+---
+ openbox/client.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/openbox/client.c b/openbox/client.c
+index 7168b2407..b8264587c 100644
+--- a/openbox/client.c
++++ b/openbox/client.c
+@@ -2742,9 +2742,12 @@ static void client_calc_layer_internal(ObClient *self)
+ void client_calc_layer(ObClient *self)
+ {
+ GList *it;
++ /* the client_calc_layer_internal calls below modify stacking_list,
++ so we have to make a copy to iterate over */
++ GList *list = g_list_copy(stacking_list);
+
+ /* skip over stuff above fullscreen layer */
+- for (it = stacking_list; it; it = g_list_next(it))
++ for (it = list; it; it = g_list_next(it))
+ if (window_layer(it->data) <= OB_STACKING_LAYER_FULLSCREEN) break;
+
+ /* find the windows in the fullscreen layer, and mark them not-visited */
+@@ -2757,7 +2760,7 @@ void client_calc_layer(ObClient *self)
+ client_calc_layer_internal(self);
+
+ /* skip over stuff above fullscreen layer */
+- for (it = stacking_list; it; it = g_list_next(it))
++ for (it = list; it; it = g_list_next(it))
+ if (window_layer(it->data) <= OB_STACKING_LAYER_FULLSCREEN) break;
+
+ /* now recalc any windows in the fullscreen layer which have not
+@@ -2768,6 +2771,8 @@ void client_calc_layer(ObClient *self)
+ !WINDOW_AS_CLIENT(it->data)->visited)
+ client_calc_layer_internal(it->data);
+ }
++
++ g_list_free(it);
+ }
+
+ gboolean client_should_show(ObClient *self)
diff --git a/desktop/openbox/patches/debian-887908.patch b/desktop/openbox/patches/debian-887908.patch
new file mode 100644
index 0000000000..2c8794ed7f
--- /dev/null
+++ b/desktop/openbox/patches/debian-887908.patch
@@ -0,0 +1,31 @@
+Description: Fix toggled hover and pressed images masks not loaded
+Author: "E. Serradilla" <eserradi@gmx.com>
+Debian-Bugs: https://bugs.debian.org/887908
+
+--- a/obrender/theme.c
++++ b/obrender/theme.c
+@@ -1494,8 +1494,10 @@ static void read_button_styles(XrmDataba
+ READ_BUTTON_MASK_COPY(disabled, btn->unpressed_mask);
+ READ_BUTTON_MASK_COPY(hover, btn->unpressed_mask);
+ if (toggled_mask) {
+- READ_BUTTON_MASK_COPY(pressed_toggled, btn->unpressed_toggled_mask);
+- READ_BUTTON_MASK_COPY(hover_toggled, btn->unpressed_toggled_mask);
++ g_snprintf(name, 128, "%s_toggled_pressed.xbm", btnname);
++ READ_MASK_COPY(name, btn->pressed_toggled_mask, btn->unpressed_toggled_mask);
++ g_snprintf(name, 128, "%s_toggled_hover.xbm", btnname);
++ READ_MASK_COPY(name, btn->hover_toggled_mask, btn->unpressed_toggled_mask);
+ }
+
+ #define READ_BUTTON_APPEARANCE(typedots, type, fallback) \
+@@ -1532,8 +1534,8 @@ static void read_button_styles(XrmDataba
+ READ_BUTTON_APPEARANCE("disabled", disabled, 0);
+ READ_BUTTON_APPEARANCE("hover", hover, 0);
+ if (toggled_mask) {
+- READ_BUTTON_APPEARANCE("unpressed.toggled", unpressed_toggled, 1);
+- READ_BUTTON_APPEARANCE("pressed.toggled", pressed_toggled, 0);
+- READ_BUTTON_APPEARANCE("hover.toggled", hover_toggled, 0);
++ READ_BUTTON_APPEARANCE("toggled.unpressed", unpressed_toggled, 1);
++ READ_BUTTON_APPEARANCE("toggled.pressed", pressed_toggled, 0);
++ READ_BUTTON_APPEARANCE("toggled.hover", hover_toggled, 0);
+ }
+ }