From owner-svn-ports-all@freebsd.org Sun Jan 21 09:59:16 2018 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6E36AEC3A98; Sun, 21 Jan 2018 09:59:16 +0000 (UTC) (envelope-from novel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 308F377F; Sun, 21 Jan 2018 09:59:16 +0000 (UTC) (envelope-from novel@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7B2F61E64; Sun, 21 Jan 2018 09:59:15 +0000 (UTC) (envelope-from novel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w0L9xF82037937; Sun, 21 Jan 2018 09:59:15 GMT (envelope-from novel@FreeBSD.org) Received: (from novel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w0L9xEiY037930; Sun, 21 Jan 2018 09:59:14 GMT (envelope-from novel@FreeBSD.org) Message-Id: <201801210959.w0L9xEiY037930@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: novel set sender to novel@FreeBSD.org using -f From: Roman Bogorodskiy Date: Sun, 21 Jan 2018 09:59:14 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r459581 - in head/x11-wm/openbox: . files X-SVN-Group: ports-head X-SVN-Commit-Author: novel X-SVN-Commit-Paths: in head/x11-wm/openbox: . files X-SVN-Commit-Revision: 459581 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Jan 2018 09:59:16 -0000 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 +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/