diff options
author | novel <novel@FreeBSD.org> | 2018-01-21 17:59:14 +0800 |
---|---|---|
committer | Koop Mast <kwm@rainbow-runner.nl> | 2018-02-04 06:27:14 +0800 |
commit | 9abd066f16c7847626da6dbc7952490f1e419e9d (patch) | |
tree | 7358ab0ee3ec7d5e6a2a3a2db9302b990c02244c /x11-wm | |
parent | 2ca938e3436e2ff6d5e62134d0b3924c989d1abd (diff) | |
download | freebsd-ports-gnome-9abd066f16c7847626da6dbc7952490f1e419e9d.tar.gz freebsd-ports-gnome-9abd066f16c7847626da6dbc7952490f1e419e9d.tar.zst freebsd-ports-gnome-9abd066f16c7847626da6dbc7952490f1e419e9d.zip |
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.
Diffstat (limited to 'x11-wm')
-rw-r--r-- | x11-wm/openbox/Makefile | 11 | ||||
-rw-r--r-- | x11-wm/openbox/distinfo | 1 | ||||
-rw-r--r-- | x11-wm/openbox/files/openbox-3.5.0-title-matching.patch | 11 | ||||
-rw-r--r-- | x11-wm/openbox/files/openbox-3.5.0-which-2.20.patch | 11 | ||||
-rw-r--r-- | x11-wm/openbox/files/openbox-3.6.2-fix-out-of-bounds.patch | 22 | ||||
-rw-r--r-- | x11-wm/openbox/files/openbox-3.6.2-rounded-corners.patch | 178 | ||||
-rw-r--r-- | x11-wm/openbox/pkg-descr | 4 |
7 files changed, 236 insertions, 2 deletions
diff --git a/x11-wm/openbox/Makefile b/x11-wm/openbox/Makefile index a9c49d64fdea..fc127b7a30ec 100644 --- a/x11-wm/openbox/Makefile +++ b/x11-wm/openbox/Makefile @@ -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 @@ -47,6 +48,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 diff --git a/x11-wm/openbox/distinfo b/x11-wm/openbox/distinfo index 5a366afef13b..60b8b1abc49d 100644 --- a/x11-wm/openbox/distinfo +++ b/x11-wm/openbox/distinfo @@ -1,2 +1,3 @@ +TIMESTAMP = 1516419364 SHA256 (openbox-3.6.tar.gz) = 866c0ab8cb1cd15c7ae8022179cb6132a4c0f0476673bd3b834a1ef67a593ba8 SIZE (openbox-3.6.tar.gz) = 963207 diff --git a/x11-wm/openbox/files/openbox-3.5.0-title-matching.patch b/x11-wm/openbox/files/openbox-3.5.0-title-matching.patch new file mode 100644 index 000000000000..fdfe28af0279 --- /dev/null +++ b/x11-wm/openbox/files/openbox-3.5.0-title-matching.patch @@ -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; diff --git a/x11-wm/openbox/files/openbox-3.5.0-which-2.20.patch b/x11-wm/openbox/files/openbox-3.5.0-which-2.20.patch new file mode 100644 index 000000000000..35d6b59065eb --- /dev/null +++ b/x11-wm/openbox/files/openbox-3.5.0-which-2.20.patch @@ -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 + diff --git a/x11-wm/openbox/files/openbox-3.6.2-fix-out-of-bounds.patch b/x11-wm/openbox/files/openbox-3.6.2-fix-out-of-bounds.patch new file mode 100644 index 000000000000..5bf59af644e1 --- /dev/null +++ b/x11-wm/openbox/files/openbox-3.6.2-fix-out-of-bounds.patch @@ -0,0 +1,22 @@ +From b0ed75ee851121ad25491ef6e1dca25be7bc50f3 Mon Sep 17 00:00:00 2001 +From: o9000 <mrovi9000@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; diff --git a/x11-wm/openbox/files/openbox-3.6.2-rounded-corners.patch b/x11-wm/openbox/files/openbox-3.6.2-rounded-corners.patch new file mode 100644 index 000000000000..7a4574828981 --- /dev/null +++ b/x11-wm/openbox/files/openbox-3.6.2-rounded-corners.patch @@ -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); + } + diff --git a/x11-wm/openbox/pkg-descr b/x11-wm/openbox/pkg-descr index 24147d52d9b3..5206fa29e040 100644 --- a/x11-wm/openbox/pkg-descr +++ b/x11-wm/openbox/pkg-descr @@ -19,4 +19,8 @@ GNOME or K desktop environments, you can combine their ease and 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/ |