svn commit: r459581 - in head/x11-wm/openbox: . files
Roman Bogorodskiy
novel at FreeBSD.org
Sun Jan 21 09:59:16 UTC 2018
Author: novel
Date: Sun Jan 21 09:59:14 2018
New Revision: 459581
URL: https://svnweb.freebsd.org/changeset/ports/459581
Log:
x11-wm/opebox: include some third party patches
- Include 3rd party patches from
https://github.com/dylanaraps/openbox-patched. These include
support for rounded corners and some bugfixes. They could be
enabled using the new PATCHES option, which is off by default;
- Use INSTALL_TARGET=install-strip to strip binaries as detected
by stage-qa.
Added:
head/x11-wm/openbox/files/openbox-3.5.0-title-matching.patch (contents, props changed)
head/x11-wm/openbox/files/openbox-3.5.0-which-2.20.patch (contents, props changed)
head/x11-wm/openbox/files/openbox-3.6.2-fix-out-of-bounds.patch (contents, props changed)
head/x11-wm/openbox/files/openbox-3.6.2-rounded-corners.patch (contents, props changed)
Modified:
head/x11-wm/openbox/Makefile
head/x11-wm/openbox/distinfo
head/x11-wm/openbox/pkg-descr
Modified: head/x11-wm/openbox/Makefile
==============================================================================
--- head/x11-wm/openbox/Makefile Sun Jan 21 09:48:06 2018 (r459580)
+++ head/x11-wm/openbox/Makefile Sun Jan 21 09:59:14 2018 (r459581)
@@ -3,7 +3,7 @@
PORTNAME= openbox
PORTVERSION= 3.6
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= x11-wm
MASTER_SITES= http://openbox.org/dist/openbox/
@@ -21,6 +21,7 @@ USE_GNOME= cairo glib20 libxml2
USE_XORG= ice sm x11 xcursor xext xft xinerama xrandr \
xrender xau
USE_LDCONFIG= yes
+INSTALL_TARGET= install-strip
SHEBANG_FILES= data/autostart/openbox-xdg-autostart
CFLAGS+= -I${LOCALBASE}/include
@@ -28,7 +29,7 @@ LDFLAGS+= -L${LOCALBASE}/lib -lXext
PLIST_SUB= VERSION=${PORTVERSION}
-OPTIONS_DEFINE= NLS IMLIB PANGO SVG NOTIFY
+OPTIONS_DEFINE= NLS IMLIB PANGO SVG NOTIFY PATCHES
OPTIONS_DEFAULT= IMLIB PANGO NOTIFY SVG
OPTIONS_SUB= yes
@@ -46,6 +47,12 @@ IMLIB_LIB_DEPENDS= libImlib2.so:graphics/imlib2
SVG_USE= GNOME=librsvg2
SVG_CONFIGURE_ENABLE= librsvg
+
+PATCHES_DESC= Enable 3rd party patches (such as rounded corners)
+PATCHES_EXTRA_PATCHES= ${PATCHDIR}/openbox-3.5.0-title-matching.patch:-p1 \
+ ${PATCHDIR}/openbox-3.5.0-which-2.20.patch:-p1 \
+ ${PATCHDIR}/openbox-3.6.2-fix-out-of-bounds.patch:-p1 \
+ ${PATCHDIR}/openbox-3.6.2-rounded-corners.patch:-p1
post-configure:
@${CHMOD} +x ${WRKSRC}/install-sh
Modified: head/x11-wm/openbox/distinfo
==============================================================================
--- head/x11-wm/openbox/distinfo Sun Jan 21 09:48:06 2018 (r459580)
+++ head/x11-wm/openbox/distinfo Sun Jan 21 09:59:14 2018 (r459581)
@@ -1,2 +1,3 @@
+TIMESTAMP = 1516419364
SHA256 (openbox-3.6.tar.gz) = 866c0ab8cb1cd15c7ae8022179cb6132a4c0f0476673bd3b834a1ef67a593ba8
SIZE (openbox-3.6.tar.gz) = 963207
Added: head/x11-wm/openbox/files/openbox-3.5.0-title-matching.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/openbox/files/openbox-3.5.0-title-matching.patch Sun Jan 21 09:59:14 2018 (r459581)
@@ -0,0 +1,11 @@
+--- openbox-3.5.0/openbox/client.c 2011-08-01 22:14:58.000000000 +0200
++++ openbox-3.5.0/openbox/client.c 2011-10-22 14:59:56.000000000 +0200
+@@ -883,7 +883,7 @@
+ !g_pattern_match(app->role,
+ strlen(self->role), self->role, NULL))
+ match = FALSE;
+- else if (app->title &&
++ else if (app->title && self->title &&
+ !g_pattern_match(app->title,
+ strlen(self->title), self->title, NULL))
+ match = FALSE;
Added: head/x11-wm/openbox/files/openbox-3.5.0-which-2.20.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/openbox/files/openbox-3.5.0-which-2.20.patch Sun Jan 21 09:59:14 2018 (r459581)
@@ -0,0 +1,11 @@
+--- openbox-3.5.0/data/autostart/autostart.in~ 2011-08-02 15:50:01.963531310 +0000
++++ openbox-3.5.0/data/autostart/autostart.in 2011-08-02 15:51:57.277879458 +0000
+@@ -8,7 +8,7 @@
+ #
+ #if test -x @libexecdir@/gnome-settings-daemon >/dev/null; then
+ # @libexecdir@/gnome-settings-daemon &
+-#elif which gnome-settings-daemon >/dev/null; then
++#elif which gnome-settings-daemon >/dev/null 2>&1; then
+ # gnome-settings-daemon &
+ #fi
+
Added: head/x11-wm/openbox/files/openbox-3.6.2-fix-out-of-bounds.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/openbox/files/openbox-3.6.2-fix-out-of-bounds.patch Sun Jan 21 09:59:14 2018 (r459581)
@@ -0,0 +1,22 @@
+From b0ed75ee851121ad25491ef6e1dca25be7bc50f3 Mon Sep 17 00:00:00 2001
+From: o9000 <mrovi9000 at gmail.com>
+Date: Wed, 5 Apr 2017 12:38:10 +0200
+Subject: [PATCH] Fix out-of-bounds read
+
+---
+ openbox/frame.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/openbox/frame.c b/openbox/frame.c
+index 89669726a..943b6380b 100644
+--- a/openbox/frame.c
++++ b/openbox/frame.c
+@@ -1215,7 +1215,7 @@ static void layout_title(ObFrame *self)
+ }
+
+ /* stop at the end of the string (or the label, which calls break) */
+- for (; *lc != '\0' && lc >= config_title_layout; lc+=i) {
++ for (; lc >= config_title_layout && *lc != '\0'; lc+=i) {
+ if (*lc == 'L') {
+ if (i > 0) {
+ self->label_on = TRUE;
Added: head/x11-wm/openbox/files/openbox-3.6.2-rounded-corners.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/x11-wm/openbox/files/openbox-3.6.2-rounded-corners.patch Sun Jan 21 09:59:14 2018 (r459581)
@@ -0,0 +1,178 @@
+diff --git a/openbox/config.c b/openbox/config.c
+index dad5d1bf..a387335c 100644
+--- a/openbox/config.c
++++ b/openbox/config.c
+@@ -48,6 +48,8 @@ StrutPartial config_margins;
+ gchar *config_theme;
+ gboolean config_theme_keepborder;
+ guint config_theme_window_list_icon_size;
++guint config_theme_cornerradius;
++gboolean config_theme_menuradius;
+
+ gchar *config_title_layout;
+
+@@ -719,6 +721,10 @@ static void parse_theme(xmlNodePtr node, gpointer d)
+ else if (config_theme_window_list_icon_size > 96)
+ config_theme_window_list_icon_size = 96;
+ }
++ if ((n = obt_xml_find_node(node, "cornerRadius"))) {
++ config_theme_cornerradius = obt_xml_node_int(n);
++ obt_xml_attr_bool(n, "menu", &config_theme_menuradius);
++ }
+
+ for (n = obt_xml_find_node(node, "font");
+ n;
+@@ -1098,6 +1104,8 @@ void config_startup(ObtXmlInst *i)
+ config_title_layout = g_strdup("NLIMC");
+ config_theme_keepborder = TRUE;
+ config_theme_window_list_icon_size = 36;
++ config_theme_cornerradius = 0;
++ config_theme_menuradius = TRUE;
+
+ config_font_activewindow = NULL;
+ config_font_inactivewindow = NULL;
+diff --git a/openbox/config.h b/openbox/config.h
+index 96a66cf1..5622d059 100644
+--- a/openbox/config.h
++++ b/openbox/config.h
+@@ -152,6 +152,10 @@ extern gchar *config_title_layout;
+ extern gboolean config_animate_iconify;
+ /*! Size of icons in focus switching dialogs */
+ extern guint config_theme_window_list_icon_size;
++/*! Display rounded corners for decorated windows */
++extern guint config_theme_cornerradius;
++/*! Display rounded corners for root and client-list menus */
++extern gboolean config_theme_menuradius;
+
+ /*! The font for the active window's title */
+ extern RrFont *config_font_activewindow;
+diff --git a/openbox/frame.c b/openbox/frame.c
+index 89669726..1539717c 100644
+--- a/openbox/frame.c
++++ b/openbox/frame.c
+@@ -334,6 +334,51 @@ void frame_adjust_shape(ObFrame *self)
+ #endif
+ }
+
++void frame_round_corners(Window window)
++{
++ XWindowAttributes win_attr;
++ XGetWindowAttributes(obt_display, window, &win_attr);
++
++ // If this returns null, the window is invalid.
++ if(!XGetWindowAttributes(obt_display, window, &win_attr))
++ return;
++
++ int width = win_attr.width + win_attr.border_width;
++ int height = win_attr.height + win_attr.border_width;
++ int rad = config_theme_cornerradius;
++ int dia = 2 * rad;
++
++ // do not try to round if the window would be smaller than the corners
++ if(width < dia || height < dia)
++ return;
++
++ Pixmap mask = XCreatePixmap(obt_display, window, width, height, 1);
++ // if this returns null, the mask is not drawable
++ if(!mask)
++ return;
++
++ XGCValues xgcv;
++ GC shape_gc = XCreateGC(obt_display, mask, 0, &xgcv);
++ if(!shape_gc) {
++ XFreePixmap(obt_display, mask);
++ return;
++ }
++
++ XSetForeground(obt_display, shape_gc, 0);
++ XFillRectangle(obt_display, mask, shape_gc, 0, 0, width, height);
++ XSetForeground(obt_display, shape_gc, 1);
++ XFillArc(obt_display, mask, shape_gc, 0, 0, dia, dia, 0, 23040);
++ XFillArc(obt_display, mask, shape_gc, width-dia-1, 0, dia, dia, 0, 23040);
++ XFillArc(obt_display, mask, shape_gc, 0, height-dia-1, dia, dia, 0, 23040);
++ XFillArc(obt_display, mask, shape_gc, width-dia-1, height-dia-1, dia, dia,
++ 0, 23040);
++ XFillRectangle(obt_display, mask, shape_gc, rad, 0, width-dia, height);
++ XFillRectangle(obt_display, mask, shape_gc, 0, rad, width, height-dia);
++ XShapeCombineMask(obt_display, window, ShapeBounding, 0, 0, mask, ShapeSet);
++ XFreePixmap(obt_display, mask);
++ XFreeGC(obt_display, shape_gc);
++}
++
+ void frame_adjust_area(ObFrame *self, gboolean moved,
+ gboolean resized, gboolean fake)
+ {
+@@ -857,7 +902,6 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
+
+ if (resized) {
+ self->need_render = TRUE;
+- framerender_frame(self);
+ frame_adjust_shape(self);
+ }
+
+@@ -884,7 +928,9 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
+ {
+ XResizeWindow(obt_display, self->label, self->label_width,
+ ob_rr_theme->label_height);
++ self->need_render = TRUE;
+ }
++ framerender_frame(self);
+ }
+
+ static void frame_adjust_cursors(ObFrame *self)
+@@ -958,6 +1004,8 @@ void frame_adjust_client_area(ObFrame *self)
+ XMoveResizeWindow(obt_display, self->backfront, 0, 0,
+ self->client->area.width,
+ self->client->area.height);
++ self->need_render = TRUE;
++ framerender_frame(self);
+ }
+
+ void frame_adjust_state(ObFrame *self)
+diff --git a/openbox/framerender.c b/openbox/framerender.c
+index 094d5962..54046580 100644
+--- a/openbox/framerender.c
++++ b/openbox/framerender.c
+@@ -21,6 +21,7 @@
+ #include "openbox.h"
+ #include "screen.h"
+ #include "client.h"
++#include "config.h"
+ #include "framerender.h"
+ #include "obrender/theme.h"
+
+@@ -42,6 +43,12 @@ void framerender_frame(ObFrame *self)
+ return;
+ self->need_render = FALSE;
+
++ if (config_theme_cornerradius &&
++ !self->client->fullscreen &&
++ !self->client->shaped &&
++ !(self->client->type == OB_CLIENT_TYPE_DOCK))
++ frame_round_corners(self->window);
++
+ {
+ gulong px;
+
+diff --git a/openbox/menuframe.c b/openbox/menuframe.c
+index c37fdcc5..f598cf15 100644
+--- a/openbox/menuframe.c
++++ b/openbox/menuframe.c
+@@ -17,6 +17,7 @@
+ See the COPYING file for a copy of the GNU General Public License.
+ */
+
++#include "frame.h"
+ #include "menuframe.h"
+ #include "client.h"
+ #include "menu.h"
+@@ -845,6 +846,9 @@ void menu_frame_render(ObMenuFrame *self)
+
+ RECT_SET_SIZE(self->area, w, h);
+
++ if (config_theme_menuradius)
++ frame_round_corners(self->window);
++
+ XFlush(obt_display);
+ }
+
Modified: head/x11-wm/openbox/pkg-descr
==============================================================================
--- head/x11-wm/openbox/pkg-descr Sun Jan 21 09:48:06 2018 (r459580)
+++ head/x11-wm/openbox/pkg-descr Sun Jan 21 09:59:14 2018 (r459581)
@@ -19,4 +19,8 @@ GNOME or K desktop environments, you can combine their
functionality with the power of Openbox. Your desktop becomes cleaner and
faster, and is in your control, when you use Openbox.
+This port also includes optional 3rd party patches for rounder corners
+support and miscellaneous fixes from
+https://github.com/dylanaraps/openbox-patched.
+
WWW: http://openbox.org/
More information about the svn-ports-all
mailing list