]> git.sur5r.net Git - i3/i3/blobdiff - i3-input/main.c
Merge branch 'master' into next
[i3/i3] / i3-input / main.c
index 6f5ad78a77713b6eac9aedcfc26fcdfbd97aebe2..b3e626e617c8f0e11f51dcbf863aedbcd507a680 100644 (file)
@@ -54,6 +54,27 @@ static int prompt_offset = 0;
 static int limit;
 xcb_window_t root;
 xcb_connection_t *conn;
+xcb_screen_t *root_screen;
+
+/*
+ * Having verboselog() and errorlog() is necessary when using libi3.
+ *
+ */
+void verboselog(char *fmt, ...) {
+    va_list args;
+
+    va_start(args, fmt);
+    vfprintf(stdout, fmt, args);
+    va_end(args);
+}
+
+void errorlog(char *fmt, ...) {
+    va_list args;
+
+    va_start(args, fmt);
+    vfprintf(stderr, fmt, args);
+    va_end(args);
+}
 
 /*
  * Concats the glyphs (either UCS-2 or UTF-8) to a single string, suitable for
@@ -104,7 +125,7 @@ static int handle_expose(void *data, xcb_connection_t *conn, xcb_expose_event_t
     if (input_position > 0)
     {
         i3String *input = i3string_from_ucs2(glyphs_ucs, input_position);
-        draw_text(input, pixmap, pixmap_gc, 4, 4, 492);
+        draw_text(input, pixmap, pixmap_gc, prompt_offset + 4, 4, 492);
         i3string_free(input);
     }
 
@@ -332,15 +353,12 @@ int main(int argc, char *argv[]) {
 
     sockfd = ipc_connect(socket_path);
 
-    if (prompt != NULL)
-        prompt_offset = predict_text_width((char *)i3string_as_ucs2(prompt), i3string_get_num_glyphs(prompt), true);
-
     int screens;
     conn = xcb_connect(NULL, &screens);
     if (!conn || xcb_connection_has_error(conn))
         die("Cannot open display\n");
 
-    xcb_screen_t *root_screen = xcb_aux_get_screen(conn, screens);
+    root_screen = xcb_aux_get_screen(conn, screens);
     root = root_screen->root;
 
     symbols = xcb_key_symbols_alloc(conn);
@@ -348,6 +366,9 @@ int main(int argc, char *argv[]) {
     font = load_font(pattern, true);
     set_font(&font);
 
+    if (prompt != NULL)
+        prompt_offset = predict_text_width(prompt);
+
     /* Open an input window */
     win = xcb_generate_id(conn);
     xcb_create_window(