]> code.delx.au - gnu-emacs/commitdiff
* xlwmenu.c (openXftFont): Do not load regular X font here.
authorDmitry Antipov <dmantipov@yandex.ru>
Tue, 3 Jun 2014 04:17:53 +0000 (08:17 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Tue, 3 Jun 2014 04:17:53 +0000 (08:17 +0400)
(XlwMenuInitialize): Remove ancient #if 0 code.
(XlwMenuDestroy): Likewise.  Free regular X font here.

lwlib/ChangeLog
lwlib/xlwmenu.c

index 294bb10ef0ac573ee06b80c6ff6a5b9621be22da..5457b91d645a410b31ee6113a014a0fe2bac794c 100644 (file)
@@ -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.
index a4a18f0ba456a4e1d451cc256b3590f91e4dddbe..6f4db562e0ba6833737b81a557b97574844c3ae7 100644 (file)
@@ -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)