summaryrefslogtreecommitdiff
path: root/lwlib
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2014-06-03 08:17:53 +0400
committerDmitry Antipov <dmantipov@yandex.ru>2014-06-03 08:17:53 +0400
commit0882152e225d4cb722782545441fd38a22cacef5 (patch)
tree3652561353f125bf92f0848ca62d487d0e2fdf6f /lwlib
parent827a3c3d8e53eabefcaf81b2944dad5e79e8031a (diff)
* xlwmenu.c (openXftFont): Do not load regular X font here.
(XlwMenuInitialize): Remove ancient #if 0 code. (XlwMenuDestroy): Likewise. Free regular X font here.
Diffstat (limited to 'lwlib')
-rw-r--r--lwlib/ChangeLog6
-rw-r--r--lwlib/xlwmenu.c38
2 files changed, 17 insertions, 27 deletions
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
index 294bb10ef0..5457b91d64 100644
--- a/lwlib/ChangeLog
+++ b/lwlib/ChangeLog
@@ -1,3 +1,9 @@
+2014-06-03 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xlwmenu.c (openXftFont): Do not load regular X font here.
+ (XlwMenuInitialize): Remove ancient #if 0 code.
+ (XlwMenuDestroy): Likewise. Free regular X font here.
+
2014-06-02 Dmitry Antipov <dmantipov@yandex.ru>
Use common memory management functions for widgets.
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index a4a18f0ba4..6f4db562e0 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -1863,16 +1863,9 @@ openXftFont (XlwMenuWidget mw)
fname[i] = '-';
}
- mw->menu.font = XLoadQueryFont (XtDisplay (mw), fname);
- if (!mw->menu.font)
- {
- mw->menu.xft_font = XftFontOpenName (XtDisplay (mw), screen, fname);
- if (!mw->menu.xft_font)
- {
- fprintf (stderr, "Can't find font '%s'\n", fname);
- mw->menu.xft_font = getDefaultXftFont (mw);
- }
- }
+ mw->menu.xft_font = XftFontOpenName (XtDisplay (mw), screen, fname);
+ if (!mw->menu.xft_font)
+ mw->menu.xft_font = getDefaultXftFont (mw);
}
if (fname != mw->menu.fontName) xfree (fname);
@@ -1889,15 +1882,6 @@ XlwMenuInitialize (Widget request, Widget w, ArgList args, Cardinal *num_args)
Window window = RootWindowOfScreen (DefaultScreenOfDisplay (XtDisplay (mw)));
Display* display = XtDisplay (mw);
-#if 0
- widget_value *tem = (widget_value *) XtMalloc (sizeof (widget_value));
-
- /* _XtCreate is freeing the object that was passed to us,
- so make a copy that we will actually keep. */
- memcpy (tem, mw->menu.contents, sizeof (widget_value));
- mw->menu.contents = tem;
-#endif
-
/* mw->menu.cursor = XCreateFontCursor (display, mw->menu.cursor_shape); */
mw->menu.cursor = mw->menu.cursor_shape;
@@ -2074,19 +2058,15 @@ XlwMenuDestroy (Widget w)
XFreePixmap (XtDisplay (mw), mw->menu.gray_pixmap);
mw->menu.gray_pixmap = (Pixmap) -1;
-#if 0
- /* Do free mw->menu.contents because nowadays we copy it
- during initialization. */
- XtFree (mw->menu.contents);
-#endif
-
/* Don't free mw->menu.contents because that comes from our creator.
The `*_stack' elements are just pointers into `contents' so leave
that alone too. But free the stacks themselves. */
if (mw->menu.old_stack) XtFree ((char *) mw->menu.old_stack);
if (mw->menu.new_stack) XtFree ((char *) mw->menu.new_stack);
- /* Remember, you can't free anything that came from the resource
+ /* Original comment was:
+
+ Remember, you can't free anything that came from the resource
database. This includes:
mw->menu.cursor
mw->menu.top_shadow_pixmap
@@ -2095,7 +2075,11 @@ XlwMenuDestroy (Widget w)
Also the color cells of top_shadow_color, bottom_shadow_color,
foreground, and button_foreground will never be freed until this
client exits. Nice, eh?
- */
+
+ But now I can free font without any visible glitches. */
+
+ if (mw->menu.font)
+ XFreeFont (XtDisplay (mw), mw->menu.font);
#ifdef HAVE_XFT
if (mw->menu.windows [0].xft_draw)