|  |  | @ -1,6 +1,4 @@ | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/include/atoms_rest.xmacro ./include/atoms_rest.xmacro
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/include/atoms_rest.xmacro	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./include/atoms_rest.xmacro	2016-11-13 14:14:05.086086381 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ include/atoms_rest.xmacro
 | 
			
		
	
		
			
				
					|  |  |  | @@ -1,6 +1,7 @@
 | 
			
		
	
		
			
				
					|  |  |  |  xmacro(_NET_WM_USER_TIME) | 
			
		
	
		
			
				
					|  |  |  |  xmacro(_NET_STARTUP_ID) | 
			
		
	
	
		
			
				
					|  |  | @ -9,10 +7,8 @@ diff -Nurp ../i3-4.13/include/atoms_rest.xmacro ./include/atoms_rest.xmacro | 
			
		
	
		
			
				
					|  |  |  |  xmacro(WM_PROTOCOLS) | 
			
		
	
		
			
				
					|  |  |  |  xmacro(WM_DELETE_WINDOW) | 
			
		
	
		
			
				
					|  |  |  |  xmacro(UTF8_STRING) | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/include/data.h ./include/data.h
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/include/data.h	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./include/data.h	2016-11-13 14:40:42.765019561 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -440,6 +440,11 @@ struct Window {
 | 
			
		
	
		
			
				
					|  |  |  | +++ include/data.h
 | 
			
		
	
		
			
				
					|  |  |  | @@ -440,6 +440,11 @@
 | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |      /* aspect ratio from WM_NORMAL_HINTS (MPlayer uses this for example) */ | 
			
		
	
		
			
				
					|  |  |  |      double aspect_ratio; | 
			
		
	
	
		
			
				
					|  |  | @ -24,10 +20,8 @@ diff -Nurp ../i3-4.13/include/data.h ./include/data.h | 
			
		
	
		
			
				
					|  |  |  |  }; | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |  /** | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/include/libi3.h ./include/libi3.h
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/include/libi3.h	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./include/libi3.h	2016-11-13 14:40:49.707019271 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -586,6 +586,11 @@ color_t draw_util_hex_to_color(const cha
 | 
			
		
	
		
			
				
					|  |  |  | +++ include/libi3.h
 | 
			
		
	
		
			
				
					|  |  |  | @@ -586,6 +586,11 @@
 | 
			
		
	
		
			
				
					|  |  |  |  void draw_util_text(i3String *text, surface_t *surface, color_t fg_color, color_t bg_color, int x, int y, int max_width); | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |  /** | 
			
		
	
	
		
			
				
					|  |  | @ -39,10 +33,8 @@ diff -Nurp ../i3-4.13/include/libi3.h ./include/libi3.h | 
			
		
	
		
			
				
					|  |  |  |   * Draws a filled rectangle. | 
			
		
	
		
			
				
					|  |  |  |   * This function is a convenience wrapper and takes care of flushing the | 
			
		
	
		
			
				
					|  |  |  |   * surface as well as restoring the cairo state. | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/include/window.h ./include/window.h
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/include/window.h	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./include/window.h	2016-11-13 14:14:05.088086381 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -89,3 +89,9 @@ void window_update_hints(i3Window *win,
 | 
			
		
	
		
			
				
					|  |  |  | +++ include/window.h
 | 
			
		
	
		
			
				
					|  |  |  | @@ -89,3 +89,9 @@
 | 
			
		
	
		
			
				
					|  |  |  |   * | 
			
		
	
		
			
				
					|  |  |  |   */ | 
			
		
	
		
			
				
					|  |  |  |  void window_update_motif_hints(i3Window *win, xcb_get_property_reply_t *prop, border_style_t *motif_border_style); | 
			
		
	
	
		
			
				
					|  |  | @ -52,10 +44,8 @@ diff -Nurp ../i3-4.13/include/window.h ./include/window.h | 
			
		
	
		
			
				
					|  |  |  | + *
 | 
			
		
	
		
			
				
					|  |  |  | + */
 | 
			
		
	
		
			
				
					|  |  |  | +void window_update_icon(i3Window *win, xcb_get_property_reply_t *prop);
 | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/libi3/draw_util.c ./libi3/draw_util.c
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/libi3/draw_util.c	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./libi3/draw_util.c	2016-11-13 14:44:55.628008986 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -135,6 +135,41 @@ void draw_util_text(i3String *text, surf
 | 
			
		
	
		
			
				
					|  |  |  | +++ libi3/draw_util.c
 | 
			
		
	
		
			
				
					|  |  |  | @@ -135,6 +135,41 @@
 | 
			
		
	
		
			
				
					|  |  |  |      cairo_surface_mark_dirty(surface->surface); | 
			
		
	
		
			
				
					|  |  |  |  } | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
	
		
			
				
					|  |  | @ -97,10 +87,8 @@ diff -Nurp ../i3-4.13/libi3/draw_util.c ./libi3/draw_util.c | 
			
		
	
		
			
				
					|  |  |  |  /** | 
			
		
	
		
			
				
					|  |  |  |   * Draws a filled rectangle. | 
			
		
	
		
			
				
					|  |  |  |   * This function is a convenience wrapper and takes care of flushing the | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/src/handlers.c ./src/handlers.c
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/src/handlers.c	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./src/handlers.c	2016-11-13 14:36:19.002030592 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -1287,6 +1287,20 @@ static bool handle_strut_partial_change(
 | 
			
		
	
		
			
				
					|  |  |  | +++ src/handlers.c
 | 
			
		
	
		
			
				
					|  |  |  | @@ -1287,6 +1287,20 @@
 | 
			
		
	
		
			
				
					|  |  |  |      return true; | 
			
		
	
		
			
				
					|  |  |  |  } | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
	
		
			
				
					|  |  | @ -121,7 +109,7 @@ diff -Nurp ../i3-4.13/src/handlers.c ./src/handlers.c | 
			
		
	
		
			
				
					|  |  |  |  /* Returns false if the event could not be processed (e.g. the window could not | 
			
		
	
		
			
				
					|  |  |  |   * be found), true otherwise */ | 
			
		
	
		
			
				
					|  |  |  |  typedef bool (*cb_property_handler_t)(void *data, xcb_connection_t *c, uint8_t state, xcb_window_t window, xcb_atom_t atom, xcb_get_property_reply_t *property); | 
			
		
	
		
			
				
					|  |  |  | @@ -1308,7 +1322,8 @@ static struct property_handler_t propert
 | 
			
		
	
		
			
				
					|  |  |  | @@ -1308,7 +1322,8 @@
 | 
			
		
	
		
			
				
					|  |  |  |      {0, 128, handle_class_change}, | 
			
		
	
		
			
				
					|  |  |  |      {0, UINT_MAX, handle_strut_partial_change}, | 
			
		
	
		
			
				
					|  |  |  |      {0, UINT_MAX, handle_window_type}, | 
			
		
	
	
		
			
				
					|  |  | @ -131,7 +119,7 @@ diff -Nurp ../i3-4.13/src/handlers.c ./src/handlers.c | 
			
		
	
		
			
				
					|  |  |  |  #define NUM_HANDLERS (sizeof(property_handlers) / sizeof(struct property_handler_t)) | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |  /* | 
			
		
	
		
			
				
					|  |  |  | @@ -1330,6 +1345,7 @@ void property_handlers_init(void) {
 | 
			
		
	
		
			
				
					|  |  |  | @@ -1330,6 +1345,7 @@
 | 
			
		
	
		
			
				
					|  |  |  |      property_handlers[8].atom = A__NET_WM_STRUT_PARTIAL; | 
			
		
	
		
			
				
					|  |  |  |      property_handlers[9].atom = A__NET_WM_WINDOW_TYPE; | 
			
		
	
		
			
				
					|  |  |  |      property_handlers[10].atom = A__MOTIF_WM_HINTS; | 
			
		
	
	
		
			
				
					|  |  | @ -139,10 +127,8 @@ diff -Nurp ../i3-4.13/src/handlers.c ./src/handlers.c | 
			
		
	
		
			
				
					|  |  |  |  } | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |  static void property_notify(uint8_t state, xcb_window_t window, xcb_atom_t atom) { | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/src/manage.c ./src/manage.c
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/src/manage.c	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./src/manage.c	2016-11-13 14:14:05.090086380 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -91,6 +91,8 @@ void manage_window(xcb_window_t window,
 | 
			
		
	
		
			
				
					|  |  |  | +++ src/manage.c
 | 
			
		
	
		
			
				
					|  |  |  | @@ -91,6 +91,8 @@
 | 
			
		
	
		
			
				
					|  |  |  |          role_cookie, startup_id_cookie, wm_hints_cookie, | 
			
		
	
		
			
				
					|  |  |  |          wm_normal_hints_cookie, motif_wm_hints_cookie, wm_user_time_cookie, wm_desktop_cookie; | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
	
		
			
				
					|  |  | @ -151,7 +137,7 @@ diff -Nurp ../i3-4.13/src/manage.c ./src/manage.c | 
			
		
	
		
			
				
					|  |  |  |      geomc = xcb_get_geometry(conn, d); | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |      /* Check if the window is mapped (it could be not mapped when intializing and | 
			
		
	
		
			
				
					|  |  |  | @@ -162,6 +164,7 @@ void manage_window(xcb_window_t window,
 | 
			
		
	
		
			
				
					|  |  |  | @@ -162,6 +164,7 @@
 | 
			
		
	
		
			
				
					|  |  |  |      motif_wm_hints_cookie = GET_PROPERTY(A__MOTIF_WM_HINTS, 5 * sizeof(uint64_t)); | 
			
		
	
		
			
				
					|  |  |  |      wm_user_time_cookie = GET_PROPERTY(A__NET_WM_USER_TIME, UINT32_MAX); | 
			
		
	
		
			
				
					|  |  |  |      wm_desktop_cookie = GET_PROPERTY(A__NET_WM_DESKTOP, UINT32_MAX); | 
			
		
	
	
		
			
				
					|  |  | @ -159,7 +145,7 @@ diff -Nurp ../i3-4.13/src/manage.c ./src/manage.c | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |      DLOG("Managing window 0x%08x\n", window); | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  | @@ -177,6 +180,7 @@ void manage_window(xcb_window_t window,
 | 
			
		
	
		
			
				
					|  |  |  | @@ -177,6 +180,7 @@
 | 
			
		
	
		
			
				
					|  |  |  |      window_update_class(cwindow, xcb_get_property_reply(conn, class_cookie, NULL), true); | 
			
		
	
		
			
				
					|  |  |  |      window_update_name_legacy(cwindow, xcb_get_property_reply(conn, title_cookie, NULL), true); | 
			
		
	
		
			
				
					|  |  |  |      window_update_name(cwindow, xcb_get_property_reply(conn, utf8_title_cookie, NULL), true); | 
			
		
	
	
		
			
				
					|  |  | @ -167,7 +153,7 @@ diff -Nurp ../i3-4.13/src/manage.c ./src/manage.c | 
			
		
	
		
			
				
					|  |  |  |      window_update_leader(cwindow, xcb_get_property_reply(conn, leader_cookie, NULL)); | 
			
		
	
		
			
				
					|  |  |  |      window_update_transient_for(cwindow, xcb_get_property_reply(conn, transient_cookie, NULL)); | 
			
		
	
		
			
				
					|  |  |  |      window_update_strut_partial(cwindow, xcb_get_property_reply(conn, strut_cookie, NULL)); | 
			
		
	
		
			
				
					|  |  |  | @@ -185,6 +189,8 @@ void manage_window(xcb_window_t window,
 | 
			
		
	
		
			
				
					|  |  |  | @@ -185,6 +189,8 @@
 | 
			
		
	
		
			
				
					|  |  |  |      window_update_hints(cwindow, xcb_get_property_reply(conn, wm_hints_cookie, NULL), &urgency_hint); | 
			
		
	
		
			
				
					|  |  |  |      border_style_t motif_border_style = BS_NORMAL; | 
			
		
	
		
			
				
					|  |  |  |      window_update_motif_hints(cwindow, xcb_get_property_reply(conn, motif_wm_hints_cookie, NULL), &motif_border_style); | 
			
		
	
	
		
			
				
					|  |  | @ -176,10 +162,8 @@ diff -Nurp ../i3-4.13/src/manage.c ./src/manage.c | 
			
		
	
		
			
				
					|  |  |  |      xcb_size_hints_t wm_size_hints; | 
			
		
	
		
			
				
					|  |  |  |      if (!xcb_icccm_get_wm_size_hints_reply(conn, wm_normal_hints_cookie, &wm_size_hints, NULL)) | 
			
		
	
		
			
				
					|  |  |  |          memset(&wm_size_hints, '\0', sizeof(xcb_size_hints_t)); | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/src/render.c ./src/render.c
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/src/render.c	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./src/render.c	2016-11-13 14:26:45.732054568 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -125,6 +125,10 @@ void render_con(Con *con, bool render_fu
 | 
			
		
	
		
			
				
					|  |  |  | +++ src/render.c
 | 
			
		
	
		
			
				
					|  |  |  | @@ -125,6 +125,10 @@
 | 
			
		
	
		
			
				
					|  |  |  |      /* find the height for the decorations */ | 
			
		
	
		
			
				
					|  |  |  |      params.deco_height = render_deco_height(); | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
	
		
			
				
					|  |  | @ -190,10 +174,8 @@ diff -Nurp ../i3-4.13/src/render.c ./src/render.c | 
			
		
	
		
			
				
					|  |  |  |      /* precalculate the sizes to be able to correct rounding errors */ | 
			
		
	
		
			
				
					|  |  |  |      params.sizes = precalculate_sizes(con, ¶ms); | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/src/window.c ./src/window.c
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/src/window.c	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./src/window.c	2016-11-13 14:48:01.177001226 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -17,6 +17,7 @@ void window_free(i3Window *win) {
 | 
			
		
	
		
			
				
					|  |  |  | +++ src/window.c
 | 
			
		
	
		
			
				
					|  |  |  | @@ -17,6 +17,7 @@
 | 
			
		
	
		
			
				
					|  |  |  |      FREE(win->class_class); | 
			
		
	
		
			
				
					|  |  |  |      FREE(win->class_instance); | 
			
		
	
		
			
				
					|  |  |  |      i3string_free(win->name); | 
			
		
	
	
		
			
				
					|  |  | @ -201,7 +183,7 @@ diff -Nurp ../i3-4.13/src/window.c ./src/window.c | 
			
		
	
		
			
				
					|  |  |  |      FREE(win->ran_assignments); | 
			
		
	
		
			
				
					|  |  |  |      FREE(win); | 
			
		
	
		
			
				
					|  |  |  |  } | 
			
		
	
		
			
				
					|  |  |  | @@ -365,3 +366,62 @@ void window_update_motif_hints(i3Window
 | 
			
		
	
		
			
				
					|  |  |  | @@ -365,3 +366,62 @@
 | 
			
		
	
		
			
				
					|  |  |  |  #undef MWM_DECOR_BORDER | 
			
		
	
		
			
				
					|  |  |  |  #undef MWM_DECOR_TITLE | 
			
		
	
		
			
				
					|  |  |  |  } | 
			
		
	
	
		
			
				
					|  |  | @ -264,10 +246,8 @@ diff -Nurp ../i3-4.13/src/window.c ./src/window.c | 
			
		
	
		
			
				
					|  |  |  | +
 | 
			
		
	
		
			
				
					|  |  |  | +    FREE(prop);
 | 
			
		
	
		
			
				
					|  |  |  | +}
 | 
			
		
	
		
			
				
					|  |  |  | diff -Nurp ../i3-4.13/src/x.c ./src/x.c
 | 
			
		
	
		
			
				
					|  |  |  | --- ../i3-4.13/src/x.c	2016-11-08 19:54:01.000000000 +0100
 | 
			
		
	
		
			
				
					|  |  |  | +++ ./src/x.c	2016-11-13 14:48:26.856000152 +0100
 | 
			
		
	
		
			
				
					|  |  |  | @@ -538,6 +538,7 @@ void x_draw_decoration(Con *con) {
 | 
			
		
	
		
			
				
					|  |  |  | +++ src/x.c
 | 
			
		
	
		
			
				
					|  |  |  | @@ -538,6 +538,7 @@
 | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |      /* 6: draw the title */ | 
			
		
	
		
			
				
					|  |  |  |      int text_offset_y = (con->deco_rect.height - config.font.height) / 2; | 
			
		
	
	
		
			
				
					|  |  | @ -275,7 +255,7 @@ diff -Nurp ../i3-4.13/src/x.c ./src/x.c | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |      struct Window *win = con->window; | 
			
		
	
		
			
				
					|  |  |  |      if (win == NULL) { | 
			
		
	
		
			
				
					|  |  |  | @@ -567,6 +568,9 @@ void x_draw_decoration(Con *con) {
 | 
			
		
	
		
			
				
					|  |  |  | @@ -567,6 +568,9 @@
 | 
			
		
	
		
			
				
					|  |  |  |      if (win->name == NULL) | 
			
		
	
		
			
				
					|  |  |  |          goto copy_pixmaps; | 
			
		
	
		
			
				
					|  |  |  |   | 
			
		
	
	
		
			
				
					|  |  | @ -285,7 +265,7 @@ diff -Nurp ../i3-4.13/src/x.c ./src/x.c | 
			
		
	
		
			
				
					|  |  |  |      int mark_width = 0; | 
			
		
	
		
			
				
					|  |  |  |      if (config.show_marks && !TAILQ_EMPTY(&(con->marks_head))) { | 
			
		
	
		
			
				
					|  |  |  |          char *formatted_mark = sstrdup(""); | 
			
		
	
		
			
				
					|  |  |  | @@ -602,12 +606,30 @@ void x_draw_decoration(Con *con) {
 | 
			
		
	
		
			
				
					|  |  |  | @@ -602,12 +606,30 @@
 | 
			
		
	
		
			
				
					|  |  |  |      i3String *title = con->title_format == NULL ? win->name : con_parse_title_format(con); | 
			
		
	
		
			
				
					|  |  |  |      draw_util_text(title, &(parent->frame_buffer), | 
			
		
	
		
			
				
					|  |  |  |                     p->color->text, p->color->background, |