]> git.sur5r.net Git - i3/i3/blobdiff - src/x.c
Apply title_align to non-leaf containers
[i3/i3] / src / x.c
diff --git a/src/x.c b/src/x.c
index ceffd30a446255277b8177bda386c4e312f52f13..267372f93bace95ce5e53ebee6e4d2a208034a9a 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -42,7 +42,7 @@ typedef struct con_state {
     bool child_mapped;
     bool is_hidden;
 
-    /** The con for which this state is. */
+    /* The con for which this state is. */
     Con *con;
 
     /* For reparenting, we have a flag (need_reparent) and the X ID of the old
@@ -105,6 +105,10 @@ static con_state *state_for_frame(xcb_window_t window) {
  *
  */
 static void change_ewmh_focus(xcb_window_t new_focus, xcb_window_t old_focus) {
+    if (new_focus == old_focus) {
+        return;
+    }
+
     ewmh_update_active_window(new_focus);
 
     if (new_focus != XCB_WINDOW_NONE) {
@@ -504,14 +508,12 @@ void x_draw_decoration(Con *con) {
     /* 3: draw a rectangle in border color around the client */
     if (p->border_style != BS_NONE && p->con_is_leaf) {
         /* We might hide some borders adjacent to the screen-edge */
-        adjacent_t borders_to_hide = ADJ_NONE;
-        borders_to_hide = con_adjacent_borders(con) & config.hide_edge_borders;
-
+        adjacent_t borders_to_hide = con_adjacent_borders(con) & config.hide_edge_borders;
         Rect br = con_border_style_rect(con);
 
         /* These rectangles represent the border around the child window
          * (left, bottom and right part). We don’t just fill the whole
-         * rectangle because some childs are not freely resizable and we want
+         * rectangle because some children are not freely resizable and we want
          * their background color to "shine through". */
         if (!(borders_to_hide & ADJ_LEFT_SCREEN_EDGE)) {
             draw_util_rectangle(&(con->frame_buffer), p->color->child_border, 0, 0, br.x, r->height);
@@ -577,31 +579,6 @@ void x_draw_decoration(Con *con) {
     /* 6: draw the title */
     int text_offset_y = (con->deco_rect.height - config.font.height) / 2;
 
-    struct Window *win = con->window;
-    if (win == NULL) {
-        i3String *title;
-        if (con->title_format == NULL) {
-            char *_title;
-            char *tree = con_get_tree_representation(con);
-            sasprintf(&_title, "i3: %s", tree);
-            free(tree);
-
-            title = i3string_from_utf8(_title);
-            FREE(_title);
-        } else {
-            title = con_parse_title_format(con);
-        }
-
-        draw_util_text(title, &(parent->frame_buffer),
-                       p->color->text, p->color->background,
-                       con->deco_rect.x + logical_px(2),
-                       con->deco_rect.y + text_offset_y,
-                       con->deco_rect.width - 2 * logical_px(2));
-        I3STRING_FREE(title);
-
-        goto after_title;
-    }
-
     const int title_padding = logical_px(2);
     const int deco_width = (int)con->deco_rect.width;
     int mark_width = 0;
@@ -641,7 +618,23 @@ void x_draw_decoration(Con *con) {
         FREE(formatted_mark);
     }
 
-    i3String *title = con->title_format == NULL ? win->name : con_parse_title_format(con);
+    i3String *title = NULL;
+    struct Window *win = con->window;
+    if (win == NULL) {
+        if (con->title_format == NULL) {
+            char *_title;
+            char *tree = con_get_tree_representation(con);
+            sasprintf(&_title, "i3: %s", tree);
+            free(tree);
+
+            title = i3string_from_utf8(_title);
+            FREE(_title);
+        } else {
+            title = con_parse_title_format(con);
+        }
+    } else {
+        title = con->title_format == NULL ? win->name : con_parse_title_format(con);
+    }
     if (title == NULL) {
         goto copy_pixmaps;
     }
@@ -674,11 +667,10 @@ void x_draw_decoration(Con *con) {
                    con->deco_rect.y + text_offset_y,
                    deco_width - mark_width - 2 * title_padding);
 
-    if (con->title_format != NULL) {
+    if (win == NULL || con->title_format != NULL) {
         I3STRING_FREE(title);
     }
 
-after_title:
     x_draw_decoration_after_title(con, p);
 copy_pixmaps:
     draw_util_copy_surface(&(con->frame_buffer), &(con->frame), 0, 0, 0, 0, con->rect.width, con->rect.height);
@@ -1283,7 +1275,7 @@ void x_set_name(Con *con, const char *name) {
  * Set up the I3_SHMLOG_PATH atom.
  *
  */
-void update_shmlog_atom() {
+void update_shmlog_atom(void) {
     if (*shmlogname == '\0') {
         xcb_delete_property(conn, root, A_I3_SHMLOG_PATH);
     } else {