]> git.sur5r.net Git - i3/i3/blobdiff - src/x.c
Merge pull request #1981 from Airblader/feature-i3bar-rgba
[i3/i3] / src / x.c
diff --git a/src/x.c b/src/x.c
index f0da9fff5e5caf1897b04f03855aba1a4a90c2b2..d312666bda116dd6b956885215af9607fb3a897e 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -145,6 +145,14 @@ void x_con_init(Con *con, uint16_t depth) {
 
     Rect dims = {-15, -15, 10, 10};
     con->frame = create_window(conn, dims, depth, visual, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCURSOR_CURSOR_POINTER, false, mask, values);
+    xcb_change_property(conn,
+                        XCB_PROP_MODE_REPLACE,
+                        con->frame,
+                        XCB_ATOM_WM_CLASS,
+                        XCB_ATOM_STRING,
+                        8,
+                        (strlen("i3-frame") + 1) * 2,
+                        "i3-frame\0i3-frame\0");
 
     if (win_colormap != XCB_NONE)
         xcb_free_colormap(conn, win_colormap);
@@ -544,7 +552,7 @@ void x_draw_decoration(Con *con) {
         FREE(formatted_mark);
         mark_width = predict_text_width(mark);
 
-        draw_text(mark, parent->pixmap, parent->pm_gc,
+        draw_text(mark, parent->pixmap, parent->pm_gc, NULL,
                   con->deco_rect.x + con->deco_rect.width - mark_width - logical_px(2),
                   con->deco_rect.y + text_offset_y, mark_width);
 
@@ -553,7 +561,7 @@ void x_draw_decoration(Con *con) {
 
     i3String *title = win->title_format == NULL ? win->name : window_parse_title_format(win);
     draw_text(title,
-              parent->pixmap, parent->pm_gc,
+              parent->pixmap, parent->pm_gc, NULL,
               con->deco_rect.x + logical_px(2) + indent_px, con->deco_rect.y + text_offset_y,
               con->deco_rect.width - logical_px(2) - indent_px - mark_width - logical_px(2));
     if (win->title_format != NULL)
@@ -631,16 +639,14 @@ static void set_hidden_state(Con *con) {
     if (should_be_hidden == state->is_hidden)
         return;
 
-    unsigned int num = 0;
-    uint32_t values[1];
     if (should_be_hidden) {
         DLOG("setting _NET_WM_STATE_HIDDEN for con = %p\n", con);
-        values[num++] = A__NET_WM_STATE_HIDDEN;
+        xcb_add_property_atom(conn, con->window->id, A__NET_WM_STATE, A__NET_WM_STATE_HIDDEN);
     } else {
         DLOG("removing _NET_WM_STATE_HIDDEN for con = %p\n", con);
+        xcb_remove_property_atom(conn, con->window->id, A__NET_WM_STATE, A__NET_WM_STATE_HIDDEN);
     }
 
-    xcb_change_property(conn, XCB_PROP_MODE_REPLACE, con->window->id, A__NET_WM_STATE, XCB_ATOM_ATOM, 32, num, values);
     state->is_hidden = should_be_hidden;
 }