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