summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsabetts <sabetts>2006-04-20 02:10:02 +0000
committersabetts <sabetts>2006-04-20 02:10:02 +0000
commitb7bb91712d275065bb4b2440fd0867d9299da94c (patch)
tree20fffc9fd31e077b23a44fedd3480c70c84b332a
parent91a86a505d76d9a4a0b89ddaaefa631a660c4835 (diff)
downloadratpoison-b7bb91712d275065bb4b2440fd0867d9299da94c.zip
* src/split.c (show_frame_message): use XmbDrawString and XmbTextEscapement
* src/screen.c (init_screen): don't include the font in the gc * src/ratpoison.h: include Xlocale.h * src/manage.c (get_wmname): support i18n characters * src/main.c (init_defaults): call load_query_font_set and set_extents_of_fontset (main): call setlocale (clean_up): call XFreeFontSet (set_extents_of_fontset): new function (load_query_font_set): likewise * src/input.c (update_input_window): use XmbTextEscapement and XmbDrawString * src/globals.h (FONT_HEIGHT): use rp_font_ascent and rp_font_descent (MAX_FONT_WIDTH): use rp_font_width new globals rp_font_ascent, rp_font_descent, rp_font_width * src/globals.c: new globals rp_font_ascent, rp_font_descent, rp_font_width * src/data.h (struct rp_defaults): font is a XFontSet * src/bar.c (max_line_length): call XmbTextEscapement (draw_string): call XmbDrawString (get_mark_box): call XmbTextEscapement * src/actions.c (read_frame): call XmbTextEscapement (cmd_license): likewise (read_frame): call XmbDrawString (cmd_license): likewise (cmd_help): likewise (update_gc): don't include the font (set_font): call load_query_font_set
-rw-r--r--AUTHORS1
-rw-r--r--ChangeLog38
-rw-r--r--NEWS3
-rw-r--r--src/actions.c68
-rw-r--r--src/bar.c26
-rw-r--r--src/data.h2
-rw-r--r--src/globals.c2
-rw-r--r--src/globals.h7
-rw-r--r--src/input.c28
-rw-r--r--src/main.c33
-rw-r--r--src/manage.c46
-rw-r--r--src/ratpoison.h4
-rw-r--r--src/screen.c3
-rw-r--r--src/split.c10
14 files changed, 173 insertions, 98 deletions
diff --git a/AUTHORS b/AUTHORS
index fed1b21..2e4c1e2 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -36,3 +36,4 @@ jesus c. meyendriesch <jesus at qplay dot org>
Bernhard R. Link <brlink at debian dot org>
Tobias C. Rittweiler <tcr at freebits dot de>
Antti Nykänen <aon at iki dot fi>
+rubikitch <rubikitch at ruby-lang org>
diff --git a/ChangeLog b/ChangeLog
index cacc4a9..4e41547 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2006-04-19 Shawn Betts <sabetts@vcn.bc.ca>
+
+ * src/split.c (show_frame_message): use XmbDrawString and XmbTextEscapement
+
+ * src/screen.c (init_screen): don't include the font in the gc
+
+ * src/ratpoison.h: include Xlocale.h
+
+ * src/manage.c (get_wmname): support i18n characters
+
+ * src/main.c (init_defaults): call load_query_font_set and set_extents_of_fontset
+ (main): call setlocale
+ (clean_up): call XFreeFontSet
+ (set_extents_of_fontset): new function
+ (load_query_font_set): likewise
+
+ * src/input.c (update_input_window): use XmbTextEscapement and XmbDrawString
+
+ * src/globals.h (FONT_HEIGHT): use rp_font_ascent and rp_font_descent
+ (MAX_FONT_WIDTH): use rp_font_width
+ new globals rp_font_ascent, rp_font_descent, rp_font_width
+
+ * src/globals.c: new globals rp_font_ascent, rp_font_descent, rp_font_width
+
+ * src/data.h (struct rp_defaults): font is a XFontSet
+
+ * src/bar.c (max_line_length): call XmbTextEscapement
+ (draw_string): call XmbDrawString
+ (get_mark_box): call XmbTextEscapement
+
+ * src/actions.c (read_frame): call XmbTextEscapement
+ (cmd_license): likewise
+ (read_frame): call XmbDrawString
+ (cmd_license): likewise
+ (cmd_help): likewise
+ (update_gc): don't include the font
+ (set_font): call load_query_font_set
+
2006-04-18 Shawn Betts <sabetts@vcn.bc.ca>
* src/hook.c (hook_run): echo the result of each command. free the
diff --git a/NEWS b/NEWS
index 5ec41b6..248ed81 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,9 @@ Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
+* Changes since 1.4.0
+** support for i18n fonts
+
* Changes since 1.4.0-beta4
** new parameters in frame dumps
:screenh and :screenw specify the size of the screen the frame was
diff --git a/src/actions.c b/src/actions.c
index 666bfb5..78736b1 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -1650,7 +1650,7 @@ read_frame (struct argspec *spec, struct sbuf *s, struct cmdarg **arg)
determine the height and width of the window. */
/* num = xsprintf (" %d ", cur->number); */
num = frame_selector (cur->number);
- width = defaults.bar_x_padding * 2 + XTextWidth (defaults.font, num, strlen (num));
+ width = defaults.bar_x_padding * 2 + XmbTextEscapement (defaults.font, num, strlen (num));
height = (FONT_HEIGHT (defaults.font) + defaults.bar_y_padding * 2);
/* Create and map the window. */
@@ -1662,10 +1662,10 @@ read_frame (struct argspec *spec, struct sbuf *s, struct cmdarg **arg)
XClearWindow (dpy, wins[i]);
/* Display the frame's number inside the window. */
- XDrawString (dpy, wins[i], s->normal_gc,
- defaults.bar_x_padding,
- defaults.bar_y_padding + defaults.font->max_bounds.ascent,
- num, strlen (num));
+ XmbDrawString (dpy, wins[i], defaults.font, s->normal_gc,
+ defaults.bar_x_padding,
+ defaults.bar_y_padding + rp_font_ascent,
+ num, strlen (num));
free (num);
i++;
@@ -3093,7 +3093,7 @@ cmd_license (int interactive, struct cmdarg **args)
{
int tmp;
- tmp = XTextWidth (defaults.font, license_text[i], strlen (license_text[i]));
+ tmp = XmbTextEscapement (defaults.font, license_text[i], strlen (license_text[i]));
if (tmp > max_width)
max_width = tmp;
}
@@ -3107,9 +3107,9 @@ cmd_license (int interactive, struct cmdarg **args)
/* Print the text. */
for(i=0; license_text[i]; i++)
{
- XDrawString (dpy, s->help_window, s->normal_gc,
- x, y + defaults.font->max_bounds.ascent,
- license_text[i], strlen (license_text[i]));
+ XmbDrawString (dpy, s->help_window, defaults.font, s->normal_gc,
+ x, y + rp_font_ascent,
+ license_text[i], strlen (license_text[i]));
y += FONT_HEIGHT (defaults.font);
}
@@ -3152,21 +3152,21 @@ cmd_help (int interactive, struct cmdarg **args)
XMapRaised (dpy, s->help_window);
XGrabKeyboard (dpy, s->help_window, False, GrabModeSync, GrabModeAsync, CurrentTime);
- XDrawString (dpy, s->help_window, s->normal_gc,
- 10, y + defaults.font->max_bounds.ascent,
- "ratpoison key bindings", strlen ("ratpoison key bindings"));
+ XmbDrawString (dpy, s->help_window, defaults.font, s->normal_gc,
+ 10, y + rp_font_ascent,
+ "ratpoison key bindings", strlen ("ratpoison key bindings"));
y += FONT_HEIGHT (defaults.font) * 2;
- XDrawString (dpy, s->help_window, s->normal_gc,
- 10, y + defaults.font->max_bounds.ascent,
- "Command key: ", strlen ("Command key: "));
+ XmbDrawString (dpy, s->help_window, defaults.font, s->normal_gc,
+ 10, y + rp_font_ascent,
+ "Command key: ", strlen ("Command key: "));
keysym_name = keysym_to_string (prefix_key.sym, prefix_key.state);
- XDrawString (dpy, s->help_window, s->normal_gc,
- 10 + XTextWidth (defaults.font, "Command key: ", strlen ("Command key: ")),
- y + defaults.font->max_bounds.ascent,
- keysym_name, strlen (keysym_name));
+ XmbDrawString (dpy, s->help_window, defaults.font, s->normal_gc,
+ 10 + XmbTextEscapement (defaults.font, "Command key: ", strlen ("Command key: ")),
+ y + rp_font_ascent,
+ keysym_name, strlen (keysym_name));
free (keysym_name);
y += FONT_HEIGHT (defaults.font) * 2;
@@ -3179,24 +3179,24 @@ cmd_help (int interactive, struct cmdarg **args)
{
keysym_name = keysym_to_string (map->actions[i].key, map->actions[i].state);
- XDrawString (dpy, s->help_window, s->normal_gc,
- x, y + defaults.font->max_bounds.ascent,
- keysym_name, strlen (keysym_name));
+ XmbDrawString (dpy, s->help_window, defaults.font, s->normal_gc,
+ x, y + rp_font_ascent,
+ keysym_name, strlen (keysym_name));
- if (XTextWidth (defaults.font, keysym_name, strlen (keysym_name)) > max_width)
- max_width = XTextWidth (defaults.font, keysym_name, strlen (keysym_name));
+ if (XmbTextEscapement (defaults.font, keysym_name, strlen (keysym_name)) > max_width)
+ max_width = XmbTextEscapement (defaults.font, keysym_name, strlen (keysym_name));
free (keysym_name);
}
else
{
- XDrawString (dpy, s->help_window, s->normal_gc,
- x, y + defaults.font->max_bounds.ascent,
- map->actions[i].data, strlen (map->actions[i].data));
+ XmbDrawString (dpy, s->help_window, defaults.font, s->normal_gc,
+ x, y + rp_font_ascent,
+ map->actions[i].data, strlen (map->actions[i].data));
- if (XTextWidth (defaults.font, map->actions[i].data, strlen (map->actions[i].data)) > max_width)
+ if (XmbTextEscapement (defaults.font, map->actions[i].data, strlen (map->actions[i].data)) > max_width)
{
- max_width = XTextWidth (defaults.font, map->actions[i].data, strlen (map->actions[i].data));
+ max_width = XmbTextEscapement (defaults.font, map->actions[i].data, strlen (map->actions[i].data));
}
}
@@ -3419,12 +3419,11 @@ update_gc (rp_screen *s)
gv.function = GXcopy;
gv.line_width = 1;
gv.subwindow_mode = IncludeInferiors;
- gv.font = defaults.font->fid;
XFreeGC (dpy, s->normal_gc);
s->normal_gc = XCreateGC(dpy, s->root,
GCForeground | GCBackground
| GCFunction | GCLineWidth
- | GCSubwindowMode | GCFont, &gv);
+ | GCSubwindowMode, &gv);
}
static void
@@ -3441,18 +3440,19 @@ update_all_gcs ()
static cmdret *
set_font (struct cmdarg **args)
{
- XFontStruct *font;
+ XFontSet font;
if (args[0] == NULL)
return cmdret_new (RET_SUCCESS, "%s", defaults.font_string);
- font = XLoadQueryFont (dpy, ARG_STRING(0));
+ font = load_query_font_set (dpy, ARG_STRING(0));
if (font == NULL)
return cmdret_new (RET_FAILURE, "deffont: unknown font");
/* Save the font as the default. */
- XFreeFont (dpy, defaults.font);
+ XFreeFontSet (dpy, defaults.font);
defaults.font = font;
+ set_extents_of_fontset(font);
update_all_gcs();
free (defaults.font_string);
diff --git a/src/bar.c b/src/bar.c
index 79d39ec..c54c627 100644
--- a/src/bar.c
+++ b/src/bar.c
@@ -231,7 +231,7 @@ max_line_length (char* msg)
int current_width;
/* Check if this line is the longest so far. */
- current_width = XTextWidth (defaults.font, msg + start, i - start);
+ current_width = XmbTextEscapement (defaults.font, msg + start, i - start);
if(current_width > ret)
{
ret = current_width;
@@ -306,22 +306,22 @@ draw_string (rp_screen *s, char *msg)
line, and move down one line. */
if (msg[i] == '\n')
{
- XDrawString (dpy, s->bar_window, s->normal_gc,
- defaults.bar_x_padding,
- defaults.bar_y_padding + defaults.font->max_bounds.ascent
- + line_no * line_height,
- msg + start, i - start);
+ XmbDrawString (dpy, s->bar_window, defaults.font, s->normal_gc,
+ defaults.bar_x_padding,
+ defaults.bar_y_padding + rp_font_ascent
+ + line_no * line_height,
+ msg + start, i - start);
line_no++;
start = i + 1;
}
}
/* Print the last line. */
- XDrawString (dpy, s->bar_window, s->normal_gc,
- defaults.bar_x_padding,
- defaults.bar_y_padding + defaults.font->max_bounds.ascent
- + line_no * line_height,
- msg + start, strlen (msg) - start);
+ XmbDrawString (dpy, s->bar_window, defaults.font, s->normal_gc,
+ defaults.bar_x_padding,
+ defaults.bar_y_padding + rp_font_ascent
+ + line_no * line_height,
+ msg + start, strlen (msg) - start);
XSync (dpy, False);
}
@@ -412,11 +412,11 @@ get_mark_box (char *msg, size_t mark_start, size_t mark_end,
if (mark_start == 0 || start_pos_in_line == 0)
start = 0;
else
- start = XTextWidth (defaults.font,
+ start = XmbTextEscapement (defaults.font,
&msg[start_line_beginning],
start_pos_in_line) + defaults.bar_x_padding;
- end = XTextWidth (defaults.font,
+ end = XmbTextEscapement (defaults.font,
&msg[end_line_beginning],
end_pos_in_line) + defaults.bar_x_padding * 2;
diff --git a/src/data.h b/src/data.h
index ef1e80c..79cdfb9 100644
--- a/src/data.h
+++ b/src/data.h
@@ -220,7 +220,7 @@ struct rp_defaults
int padding_top;
int padding_bottom;
- XFontStruct *font;
+ XFontSet font;
char *font_string;
char *fgcolor_string;
diff --git a/src/globals.c b/src/globals.c
index cff1646..6534cc8 100644
--- a/src/globals.c
+++ b/src/globals.c
@@ -32,6 +32,8 @@ int rat_visible = 1; /* rat is visible by default */
char *rp_exec_newwm = NULL;
+int rp_font_ascent, rp_font_descent, rp_font_width;
+
Atom wm_name;
Atom wm_state;
Atom wm_change_state;
diff --git a/src/globals.h b/src/globals.h
index a2d466f..d80e31a 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -27,8 +27,8 @@
#define RET_SUCCESS 1
#define RET_FAILURE 0
-#define FONT_HEIGHT(f) ((f)->max_bounds.ascent + (f)->max_bounds.descent)
-#define MAX_FONT_WIDTH(f) ((f)->max_bounds.width)
+#define FONT_HEIGHT(f) (rp_font_ascent + rp_font_descent)
+#define MAX_FONT_WIDTH(f) (rp_font_width)
#define WIN_EVENTS (StructureNotifyMask | PropertyChangeMask | ColormapChangeMask | FocusChangeMask)
/* EMPTY is used when a frame doesn't contain a window, or a window
@@ -67,6 +67,9 @@ extern struct list_head rp_children;
extern struct rp_defaults defaults;
+/* Cached font info. */
+extern int rp_font_ascent, rp_font_descent, rp_font_width;
+
/* The prefix key also known as the command character under screen. */
extern struct rp_key prefix_key;
diff --git a/src/input.c b/src/input.c
index 5fcb303..6a51dd1 100644
--- a/src/input.c
+++ b/src/input.c
@@ -319,8 +319,8 @@ read_key (KeySym *keysym, unsigned int *modifiers, char *keysym_name, int len)
static void
update_input_window (rp_screen *s, rp_input_line *line)
{
- int prompt_width = XTextWidth (defaults.font, line->prompt, strlen (line->prompt));
- int input_width = XTextWidth (defaults.font, line->buffer, line->length);
+ int prompt_width = XmbTextEscapement (defaults.font, line->prompt, strlen (line->prompt));
+ int input_width = XmbTextEscapement (defaults.font, line->buffer, line->length);
int total_width;
GC lgc;
XGCValues gv;
@@ -341,17 +341,17 @@ update_input_window (rp_screen *s, rp_input_line *line)
XClearWindow (dpy, s->input_window);
XSync (dpy, False);
- XDrawString (dpy, s->input_window, s->normal_gc,
- defaults.bar_x_padding,
- defaults.bar_y_padding + defaults.font->max_bounds.ascent,
- line->prompt,
- strlen (line->prompt));
+ XmbDrawString (dpy, s->input_window, defaults.font, s->normal_gc,
+ defaults.bar_x_padding,
+ defaults.bar_y_padding + rp_font_ascent,
+ line->prompt,
+ strlen (line->prompt));
- XDrawString (dpy, s->input_window, s->normal_gc,
- defaults.bar_x_padding + prompt_width,
- defaults.bar_y_padding + defaults.font->max_bounds.ascent,
- line->buffer,
- line->length);
+ XmbDrawString (dpy, s->input_window, defaults.font, s->normal_gc,
+ defaults.bar_x_padding + prompt_width,
+ defaults.bar_y_padding + rp_font_ascent,
+ line->buffer,
+ line->length);
gv.function = GXxor;
gv.foreground = s->fg_color ^ s->bg_color;
@@ -359,9 +359,9 @@ update_input_window (rp_screen *s, rp_input_line *line)
/* Draw a cheap-o cursor - MkII */
XFillRectangle (dpy, s->input_window, lgc,
- defaults.bar_x_padding + prompt_width + XTextWidth (defaults.font, line->buffer, line->position),
+ defaults.bar_x_padding + prompt_width + XmbTextEscapement (defaults.font, line->buffer, line->position),
defaults.bar_y_padding,
- XTextWidth (defaults.font, &line->buffer[line->position], 1),
+ XmbTextEscapement (defaults.font, &line->buffer[line->position], 1),
FONT_HEIGHT (defaults.font));
XFlush (dpy);
diff --git a/src/main.c b/src/main.c
index c3732e3..d04693b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -485,13 +485,14 @@ init_defaults ()
defaults.padding_top = 0;
defaults.padding_bottom = 0;
- defaults.font = XLoadQueryFont (dpy, DEFAULT_FONT);
+ defaults.font = load_query_font_set (dpy, DEFAULT_FONT);
if (defaults.font == NULL)
{
fprintf (stderr, "ratpoison: Cannot load font %s.\n", DEFAULT_FONT);
exit (EXIT_FAILURE);
}
defaults.font_string = xstrdup (DEFAULT_FONT);
+ set_extents_of_fontset (defaults.font);
defaults.fgcolor_string = xstrdup ("black");
defaults.bgcolor_string = xstrdup ("white");
@@ -525,6 +526,7 @@ main (int argc, char *argv[])
char *alt_rcfile = NULL;
myargv = argv;
+ setlocale(LC_CTYPE, "");
/* Parse the arguments */
while (1)
@@ -753,9 +755,36 @@ clean_up ()
free_xinerama();
- XFreeFont (dpy, defaults.font);
+ XFreeFontSet (dpy, defaults.font);
free (defaults.window_fmt);
XSetInputFocus (dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
XCloseDisplay (dpy);
}
+
+void
+set_extents_of_fontset (XFontSet font)
+{
+ XFontSetExtents *extent;
+ extent = XExtentsOfFontSet(font);
+ rp_font_ascent = extent->max_logical_extent.height * 9 / 10;
+ rp_font_descent = extent->max_logical_extent.height / 5;
+ rp_font_width = extent->max_logical_extent.width;
+}
+
+XFontSet load_query_font_set (Display *disp, const char *fontset_name)
+{
+ XFontSet fontset;
+ int missing_charset_count;
+ char **missing_charset_list;
+ char *def_string;
+
+ fontset = XCreateFontSet(disp, fontset_name,
+ &missing_charset_list, &missing_charset_count,
+ &def_string);
+ if (missing_charset_count) {
+ PRINT_DEBUG (("Missing charsets in FontSet(%s) creation.\n", fontset_name));
+ XFreeStringList(missing_charset_list);
+ }
+ return fontset;
+}
diff --git a/src/manage.c b/src/manage.c
index dd5eae9..d757cb4 100644
--- a/src/manage.c
+++ b/src/manage.c
@@ -198,33 +198,29 @@ update_normal_hints (rp_window *win)
static char *
get_wmname (Window w)
{
- Atom actual_type;
- int actual_format;
- int status;
- unsigned long n;
- unsigned long bytes_after;
unsigned char *name = NULL;
char *ret;
-
- status = XGetWindowProperty (dpy, w, wm_name, 0L, 100L, False,
- XA_STRING, &actual_type, &actual_format,
- &n, &bytes_after, &name);
-
- PRINT_DEBUG (("XGetWindowProperty: %d %ld %d %ld %ld '%s'\n", status, actual_type,
- actual_format, n, bytes_after, name));
-
- if (status != Success || name == NULL)
- {
- PRINT_DEBUG (("I can't get the WMName.\n"));
- return NULL;
- }
-
- if (n == 0)
- {
- PRINT_DEBUG (("I can't get the WMName.\n"));
- XFree (name);
- return NULL;
- }
+ XTextProperty text_prop;
+ int n;
+ char** cl;
+
+ if (XGetWMName(dpy, w, &text_prop) != 0) {
+ if (text_prop.encoding == XA_STRING) {
+ name = (char *)text_prop.value;
+ } else {
+ XmbTextPropertyToTextList(dpy, &text_prop, &cl, &n);
+ if (cl) {
+ name = strdup(cl[0]);
+ XFreeStringList(cl);
+ } else {
+ PRINT_DEBUG (("I can't get the WMName.\n"));
+ return NULL;
+ }
+ }
+ } else {
+ PRINT_DEBUG (("I can't get the WMName.\n"));
+ return NULL;
+ }
PRINT_DEBUG (("WM_NAME: '%s'\n", name));
diff --git a/src/ratpoison.h b/src/ratpoison.h
index 614abc5..1825eca 100644
--- a/src/ratpoison.h
+++ b/src/ratpoison.h
@@ -32,6 +32,7 @@
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
#include <fcntl.h>
/* Some systems don't define the close-on-exec flag in fcntl.h */
@@ -106,5 +107,8 @@ int str_comp (char *s1, char *s2, int len);
void check_child_procs ();
void chld_handler (int signum);
void set_sig_handler (int sig, void (*action)(int));
+/* Font functions. */
+void set_extents_of_fontset (XFontSet font);
+XFontSet load_query_font_set (Display *disp, const char *fontset_name);
#endif /* ! _RATPOISON_H */
diff --git a/src/screen.c b/src/screen.c
index e4cc8d3..7d2fc6e 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -308,10 +308,9 @@ init_screen (rp_screen *s, int screen_num)
gv.function = GXcopy;
gv.line_width = 1;
gv.subwindow_mode = IncludeInferiors;
- gv.font = defaults.font->fid;
s->normal_gc = XCreateGC(dpy, s->root,
GCForeground | GCBackground | GCFunction
- | GCLineWidth | GCSubwindowMode | GCFont,
+ | GCLineWidth | GCSubwindowMode,
&gv);
/* Create the program bar window. */
diff --git a/src/split.c b/src/split.c
index 109740f..a93d3a0 100644
--- a/src/split.c
+++ b/src/split.c
@@ -918,7 +918,7 @@ show_frame_message (char *msg)
frame = current_frame();
- width = defaults.bar_x_padding * 2 + XTextWidth (defaults.font, msg, strlen (msg));
+ width = defaults.bar_x_padding * 2 + XmbTextEscapement (defaults.font, msg, strlen (msg));
height = (FONT_HEIGHT (defaults.font) + defaults.bar_y_padding * 2);
/* We don't want another frame indicator to be displayed on another
@@ -935,10 +935,10 @@ show_frame_message (char *msg)
XClearWindow (dpy, s->frame_window);
XSync (dpy, False);
- XDrawString (dpy, s->frame_window, s->normal_gc,
- defaults.bar_x_padding,
- defaults.bar_y_padding + defaults.font->max_bounds.ascent,
- msg, strlen (msg));
+ XmbDrawString (dpy, s->frame_window, defaults.font, s->normal_gc,
+ defaults.bar_x_padding,
+ defaults.bar_y_padding + rp_font_ascent,
+ msg, strlen (msg));
}
rp_frame *