view lwlib/xlwmenuP.h @ 1298:1b4bc72f433e

[xemacs-hg @ 2003-02-14 12:05:06 by ben] speedups to build process autoload.el: Factor out common code in generate-{c-,}file-autoloads-1 into new function generate-autoload-ish-1. \(I was originally going to use this for custom as well but ended up thinking better of it.) cus-dep.el: Cache the old computed values in custom-load.el and reuse them as necessary, to speed up running cus-dep (which would take 25-30 seconds to do all files in lisp/*, lisp/*/* on my Pentium III 700). Use `message' not `princ' to get correct newline behavior. Output messages showing each file we do actually process. update-elc-2.el: Rewrite algorithm to be much faster -- cache calls to directory-files and don't make needless calls to file-exists-p, file-directory-p because they're way way slow. Autoload early and only when update-elc has told us to. update-elc.el: If no files need byte compilation, signal to update-elc-2 to do any necessary autoload updating (using the file REBUILD_AUTOLOADS) rather than doing it ourselves, which would be way slow. Ignore updates to custom-load.el and auto-autoloads.el when checking to see whether autoloads need updating. Optimize out many unnecessary calls to file-exists-p to speed it up somewhat. (#### The remaining time is 50% or more in locate-file; this is presumably because, even though it has a cache, it's still statting each file to determine it's actually there. By calling directory-files ourselves, building a tree, and then looking in that tree, we could drastically shorten the time needed to do the locate operation.)
author ben
date Fri, 14 Feb 2003 12:05:07 +0000
parents 8de8e3f6228a
children ad2f4ae9895b
line wrap: on
line source

#ifndef INCLUDED_xlwmenuP_h_
#define INCLUDED_xlwmenuP_h_

#include "xlwmenu.h"
#include <X11/CoreP.h>

/* Elements in the stack arrays. */
typedef struct _window_state
{
  Window	window;
  Position	x;
  Position	y;
  Dimension	width;
  Dimension	height;
  Dimension	label_width;
  Dimension	toggle_width;
} window_state;


/* New fields for the XlwMenu widget instance record */
typedef struct _XlwMenu_part 
{
  /* slots set by the resources */

#ifdef NEED_MOTIF
  XmFontList	font_list;
  XmFontList	font_list_2;
  XmFontList	fallback_font_list;
#else
  XFontStruct *	font;
# ifdef USE_XFONTSET
  XFontSet font_set;
# endif
#endif
  Dimension	font_ascent, font_descent;  /* extracted from font/fontlist */

  Pixel		foreground;
  Pixel		button_foreground;
  Pixel		highlight_foreground;
  Pixel		title_foreground;
  Dimension	margin;
  Dimension	horizontal_margin;
  Dimension	vertical_margin;
  Dimension	column_spacing;
  Dimension	shadow_thickness;
  Dimension	indicator_size;
  Pixel 	top_shadow_color;
  Pixel 	bottom_shadow_color;
  Pixel 	select_color;
  Pixmap	top_shadow_pixmap;
  Pixmap	bottom_shadow_pixmap;
  Cursor	cursor_shape;
  XtCallbackList	open;
  XtCallbackList	select;
  widget_value*	contents;
  int		horizontal;
  Boolean	use_backing_store;
  Boolean	bounce_down;
  Boolean       lookup_labels;
  
  /* State of the XlwMenu */
  int			old_depth;
  widget_value**	old_stack;
  int			old_stack_length;

  /* New state after the user moved */
  int			new_depth;
  widget_value**	new_stack;
  int			new_stack_length;

  /* Window resources */
  window_state*		windows;
  int			windows_length;

  /* Internal part, set by the XlwMenu */
  GC			foreground_gc;
  GC			button_gc;
  GC			background_gc;
  GC			inactive_gc;
  GC			inactive_button_gc;
  GC			shadow_top_gc;
  GC			shadow_bottom_gc;
  GC			select_gc;
  GC			highlight_gc;
  GC			title_gc;
  Cursor		cursor;
  Boolean		popped_up;
  Pixmap		gray_pixmap;

  /* Stay-up stuff */
  Boolean               pointer_grabbed;
  Boolean		next_release_must_exit;
  Time			menu_post_time, menu_bounce_time;
  widget_value *	last_selected_val;
} XlwMenuPart;

/* Full instance record declaration */
typedef struct _XlwMenuRec 
{
  CorePart	core;
  XlwMenuPart	menu;
} XlwMenuRec;

/* New fields for the XlwMenu widget class record */
typedef struct 
{
  int	dummy;
} XlwMenuClassPart;

/* Full class record declaration. */
typedef struct _XlwMenuClassRec 
{
  CoreClassPart		core_class;
  XlwMenuClassPart	menu_class;
} XlwMenuClassRec;

/* Class pointer. */
extern XlwMenuClassRec xlwMenuClassRec;

#endif /* INCLUDED_xlwmenuP_h_ */