diff options
author | Dylan Araps | 2017-08-12 20:55:00 +1000 |
---|---|---|
committer | Dylan Araps | 2017-08-12 20:55:00 +1000 |
commit | a751e6ab2e8e8b88b84f4ea70f746eea494a36fb (patch) | |
tree | 467212896a691a6f146e0002c3d7d440b80b72e0 /openbox-3.6.2-rounded-corners.patch | |
download | aur-a751e6ab2e8e8b88b84f4ea70f746eea494a36fb.tar.gz |
initial commit
Diffstat (limited to 'openbox-3.6.2-rounded-corners.patch')
-rw-r--r-- | openbox-3.6.2-rounded-corners.patch | 144 |
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); + } + |