diff options
author | Matteo Bernardini | 2023-09-22 10:01:04 +0200 |
---|---|---|
committer | Matteo Bernardini | 2024-03-23 10:43:21 +0100 |
commit | 91b99a4f13630fb78f168c18ee4d9228eacb7dcc (patch) | |
tree | 0a77e0ca29278d7ab651554d576c603559fe841d | |
parent | ecfbf772e938e6dfdc25bbce4ec902ad04952af9 (diff) | |
download | slackbuilds-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>
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); + } + } |