From 5742859f273b82e7dbadf7e9f581fd5d364dc05a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Sat, 9 Aug 2014 11:06:25 +0200 Subject: [PATCH] * widget.c (DEFAULT_FACE_FONT, EmacsFrameSetValues, setup_frame_gcs) (resources, setup_frame_cursor_bits): Remove unused variables and functions, esp. wrt. font. * widgetprv.h (EmacsFramePart): Remove font. Fixes: debbugs:18227 --- src/ChangeLog | 8 +++ src/widget.c | 186 ++---------------------------------------------- src/widgetprv.h | 1 - 3 files changed, 12 insertions(+), 183 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2c5001e9a5a..b5831d811d5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2014-08-09 Jan Djärv + + * widgetprv.h (EmacsFramePart): Remove font. + + * widget.c (DEFAULT_FACE_FONT, EmacsFrameSetValues, setup_frame_gcs) + (resources, setup_frame_cursor_bits): Remove unused variables and + functions, esp. wrt. font (Bug#18227). + 2014-08-07 Paul Eggert * xterm.c (x_delete_terminal): Plug file descriptor leak (Bug#17691). diff --git a/src/widget.c b/src/widget.c index 45118a88730..b5b76bb306b 100644 --- a/src/widget.c +++ b/src/widget.c @@ -53,30 +53,11 @@ along with GNU Emacs. If not, see . */ #include "character.h" #include "font.h" -/* This sucks: this is the first default that x-faces.el tries. This won't - be used unless neither the "Emacs.EmacsFrame" resource nor the - "Emacs.EmacsFrame" resource is set; the frame - may have the wrong default size if this font doesn't exist, but some other - font that x-faces.el does. The workaround is to specify some font in the - resource database; I don't know a solution other than duplicating the font- - searching code from x-faces.el in this file. - - This also means that if "Emacs.EmacsFrame" is specified as a non- - existent font, then Xt is going to substitute "XtDefaultFont" for it, - which is a different size than this one. The solution for this is to - make x-faces.el try to use XtDefaultFont. The problem with that is that - XtDefaultFont is almost certainly variable-width. - - #### Perhaps we could have this code explicitly set XtDefaultFont to this? - */ -#define DEFAULT_FACE_FONT "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*" - static void EmacsFrameInitialize (Widget request, Widget new, ArgList dum1, Cardinal *dum2); static void EmacsFrameDestroy (Widget widget); static void EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs); static void EmacsFrameResize (Widget widget); -static Boolean EmacsFrameSetValues (Widget cur_widget, Widget req_widget, Widget new_widget, ArgList dum1, Cardinal *dum2); static XtGeometryResult EmacsFrameQueryGeometry (Widget widget, XtWidgetGeometry *request, XtWidgetGeometry *result); @@ -102,8 +83,6 @@ static XtResource resources[] = { offset (internal_border_width), XtRImmediate, (XtPointer)4}, {XtNinterline, XtCInterline, XtRInt, sizeof (int), offset (interline), XtRImmediate, (XtPointer)0}, - {XtNfont, XtCFont, XtRFontStruct, sizeof (struct font *), - offset (font),XtRString, DEFAULT_FACE_FONT}, {XtNforeground, XtCForeground, XtRPixel, sizeof (Pixel), offset (foreground_pixel), XtRString, "XtDefaultForeground"}, {XtNcursorColor, XtCForeground, XtRPixel, sizeof (Pixel), @@ -157,7 +136,10 @@ static EmacsFrameClassRec emacsFrameClassRec = { /* destroy */ EmacsFrameDestroy, /* resize */ EmacsFrameResize, /* expose */ XtInheritExpose, - /* set_values */ EmacsFrameSetValues, + + /* Emacs never does XtSetvalues on this widget, so we have no code + for it. */ + /* set_values */ 0, /* Not supported */ /* set_values_hook */ 0, /* set_values_almost */ XtInheritSetValuesAlmost, /* get_values_hook */ 0, @@ -502,91 +484,6 @@ widget_update_wm_size_hints (Widget widget) update_wm_hints (ew); } -static char setup_frame_cursor_bits[] = -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static void -setup_frame_gcs (EmacsFrame ew) -{ - XGCValues gc_values; - struct frame* s = ew->emacs_frame.frame; - Pixmap blank_stipple, blank_tile; - unsigned long valuemask = (GCForeground | GCBackground | GCGraphicsExposures - | GCStipple | GCTile); - Lisp_Object font; - - XSETFONT (font, ew->emacs_frame.font); - font = Ffont_xlfd_name (font, Qnil); - if (STRINGP (font)) - { - XFontStruct *xfont = XLoadQueryFont (FRAME_DISPLAY_INFO (s)->display, - SSDATA (font)); - if (xfont) - { - gc_values.font = xfont->fid; - valuemask |= GCFont; - } - } - - /* We have to initialize all of our GCs to have a stipple/tile, otherwise - XGetGCValues returns uninitialized data when we query the stipple - (instead of None or something sensible) and it makes things hard. - - This should be fixed for real by not querying the GCs but instead having - some GC-based cache instead of the current face-based cache which doesn't - effectively cache all of the GC settings we need to use. - */ - - blank_stipple - = XCreateBitmapFromData (XtDisplay (ew), - RootWindowOfScreen (XtScreen (ew)), - setup_frame_cursor_bits, 2, 2); - - /* use fg = 0, bg = 1 below, but it's irrelevant since this pixmap should - never actually get used as a background tile! - */ - blank_tile - = XCreatePixmapFromBitmapData (XtDisplay (ew), - RootWindowOfScreen (XtScreen (ew)), - setup_frame_cursor_bits, 2, 2, - 0, 1, ew->core.depth); - - /* Normal video */ - gc_values.foreground = ew->emacs_frame.foreground_pixel; - gc_values.background = ew->core.background_pixel; - gc_values.graphics_exposures = False; - gc_values.stipple = blank_stipple; - gc_values.tile = blank_tile; - XChangeGC (XtDisplay (ew), s->output_data.x->normal_gc, - valuemask, &gc_values); - - /* Reverse video style. */ - gc_values.foreground = ew->core.background_pixel; - gc_values.background = ew->emacs_frame.foreground_pixel; - gc_values.graphics_exposures = False; - gc_values.stipple = blank_stipple; - gc_values.tile = blank_tile; - XChangeGC (XtDisplay (ew), s->output_data.x->reverse_gc, - valuemask, &gc_values); - - /* Cursor has to have an empty stipple. */ - gc_values.foreground = ew->core.background_pixel; - gc_values.background = ew->emacs_frame.cursor_color; - gc_values.graphics_exposures = False; - gc_values.tile = blank_tile; - gc_values.stipple - = XCreateBitmapFromData (XtDisplay (ew), - RootWindowOfScreen (XtScreen (ew)), - setup_frame_cursor_bits, 16, 16); - XChangeGC (XtDisplay (ew), s->output_data.x->cursor_gc, - valuemask, &gc_values); -} - static void update_various_frame_slots (EmacsFrame ew) { @@ -614,7 +511,6 @@ update_from_various_frame_slots (EmacsFrame ew) ew->core.width = FRAME_PIXEL_WIDTH (f); ew->core.background_pixel = FRAME_BACKGROUND_PIXEL (f); ew->emacs_frame.internal_border_width = f->internal_border_width; - ew->emacs_frame.font = x->font; ew->emacs_frame.foreground_pixel = FRAME_FOREGROUND_PIXEL (f); ew->emacs_frame.cursor_color = x->cursor_pixel; ew->core.border_pixel = x->border_pixel; @@ -721,80 +617,6 @@ EmacsFrameResize (Widget widget) } } -static Boolean -EmacsFrameSetValues (Widget cur_widget, Widget req_widget, Widget new_widget, ArgList dum1, Cardinal *dum2) -{ - EmacsFrame cur = (EmacsFrame)cur_widget; - EmacsFrame new = (EmacsFrame)new_widget; - - Boolean needs_a_refresh = False; - Boolean has_to_recompute_size; - Boolean has_to_recompute_gcs; - Boolean has_to_update_hints; - - int char_width, char_height; - Dimension pixel_width; - Dimension pixel_height; - - /* AFAIK, this function is never called. -- Jan D, Oct 2009. */ - has_to_recompute_gcs = (cur->emacs_frame.font != new->emacs_frame.font - || (cur->emacs_frame.foreground_pixel - != new->emacs_frame.foreground_pixel) - || (cur->core.background_pixel - != new->core.background_pixel) - ); - - has_to_recompute_size = (cur->emacs_frame.font != new->emacs_frame.font - && cur->core.width == new->core.width - && cur->core.height == new->core.height); - - has_to_update_hints = (cur->emacs_frame.font != new->emacs_frame.font); - - if (has_to_recompute_gcs) - { - setup_frame_gcs (new); - needs_a_refresh = True; - } - - if (has_to_recompute_size) - { - /* Don't do this pixelwise, hopefully. */ - pixel_width = new->core.width; - pixel_height = new->core.height; - pixel_to_char_size (new, pixel_width, pixel_height, &char_width, - &char_height); - char_to_pixel_size (new, char_width, char_height, &pixel_width, - &pixel_height); - new->core.width = pixel_width; - new->core.height = pixel_height; - - change_frame_size (new->emacs_frame.frame, char_width, char_height, - 1, 0, 0, 0); - needs_a_refresh = True; - } - - if (has_to_update_hints) - update_wm_hints (new); - - update_various_frame_slots (new); - - /* #### This doesn't work, I haven't been able to find ANY kludge that - will let (x-create-frame '((iconic . t))) work. It seems that changes - to wm_shell's iconic slot have no effect after it has been realized, - and calling XIconifyWindow doesn't work either (even though the window - has been created.) Perhaps there is some property we could smash - directly, but I'm sick of this for now. - */ - if (cur->emacs_frame.iconic != new->emacs_frame.iconic) - { - Widget wmshell = get_wm_shell ((Widget) cur); - XtVaSetValues (wmshell, XtNiconic, - (XtArgVal) new->emacs_frame.iconic, NULL); - } - - return needs_a_refresh; -} - static XtGeometryResult EmacsFrameQueryGeometry (Widget widget, XtWidgetGeometry *request, XtWidgetGeometry *result) { diff --git a/src/widgetprv.h b/src/widgetprv.h index c0a5238743e..f5e2eb549a1 100644 --- a/src/widgetprv.h +++ b/src/widgetprv.h @@ -43,7 +43,6 @@ typedef struct { int internal_border_width; /* internal borders */ int interline; /* skips between lines */ - struct font* font; /* font */ Pixel foreground_pixel; /* foreground */ Pixel cursor_color; /* text cursor color */ -- 2.39.5