aboutsummarylogtreecommitdiffstats
path: root/openbox-3.6.2-rounded-corners.patch
diff options
context:
space:
mode:
authorDylan Araps2017-08-12 20:55:00 +1000
committerDylan Araps2017-08-12 20:55:00 +1000
commita751e6ab2e8e8b88b84f4ea70f746eea494a36fb (patch)
tree467212896a691a6f146e0002c3d7d440b80b72e0 /openbox-3.6.2-rounded-corners.patch
downloadaur-a751e6ab2e8e8b88b84f4ea70f746eea494a36fb.tar.gz
initial commit
Diffstat (limited to 'openbox-3.6.2-rounded-corners.patch')
-rw-r--r--openbox-3.6.2-rounded-corners.patch144
1 files changed, 144 insertions, 0 deletions
diff --git a/openbox-3.6.2-rounded-corners.patch b/openbox-3.6.2-rounded-corners.patch
new file mode 100644
index 000000000000..b9e13b4920b5
--- /dev/null
+++ b/openbox-3.6.2-rounded-corners.patch
@@ -0,0 +1,144 @@
+--- a/openbox/config.h 2014-11-05 08:19:42.000000000 -0700
++++ b/openbox/config.h 2017-03-06 14:40:38.982567786 -0700
+@@ -152,6 +152,9 @@
+ 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;
++extern gboolean config_theme_menuradius;
+
+ /*! The font for the active window's title */
+ extern RrFont *config_font_activewindow;
+--- a/openbox/config.c 2014-11-05 08:19:42.000000000 -0700
++++ b/openbox/config.c 2017-03-06 14:40:38.982567786 -0700
+@@ -48,6 +48,8 @@
+ 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 @@
+ 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 @@
+ 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;
+--- a/openbox/frame.c 2014-11-05 08:19:42.000000000 -0700
++++ b/openbox/frame.c 2017-03-06 14:40:38.982567786 -0700
+@@ -334,6 +334,31 @@
+ #endif
+ }
+
++void frame_round_corners(Window window)
++{
++ XWindowAttributes win_attr;
++ XGetWindowAttributes(obt_display, window, &win_attr);
++ int width = win_attr.width + win_attr.border_width;
++ int height = win_attr.height + win_attr.border_width;
++ Pixmap mask = XCreatePixmap(obt_display, window, width, height, 1);
++ XGCValues xgcv;
++ GC shape_gc = XCreateGC(obt_display, mask, 0, &xgcv);
++ int rad = config_theme_cornerradius;
++ int dia = 2 * rad;
++ 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);
++}
++
+ void frame_adjust_area(ObFrame *self, gboolean moved,
+ gboolean resized, gboolean fake)
+ {
+@@ -857,7 +882,6 @@
+
+ if (resized) {
+ self->need_render = TRUE;
+- framerender_frame(self);
+ frame_adjust_shape(self);
+ }
+
+@@ -884,7 +908,9 @@
+ {
+ 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 +984,8 @@
+ 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)
+--- a/openbox/framerender.c 2014-11-05 09:00:49.000000000 -0700
++++ b/openbox/framerender.c 2017-03-06 14:40:38.986567825 -0700
+@@ -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,9 @@
+ return;
+ self->need_render = FALSE;
+
++ if ( !self->max_horz && !self->max_vert && config_theme_cornerradius )
++ frame_round_corners(self->window);
++
+ {
+ gulong px;
+
+--- a/openbox/menuframe.c 2014-11-05 08:19:42.000000000 -0700
++++ b/openbox/menuframe.c 2017-03-06 14:40:38.986567825 -0700
+@@ -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 @@
+
+ RECT_SET_SIZE(self->area, w, h);
+
++ if ( config_theme_menuradius )
++ frame_round_corners(self->window);
++
+ XFlush(obt_display);
+ }
+