XEmacs 21.2-b1
[chise/xemacs-chise.git.1] / lwlib / xlwmenuP.h
1 #ifndef _XlwMenuP_h
2 #define _XlwMenuP_h
3
4 #include "xlwmenu.h"
5 #include <X11/CoreP.h>
6
7 /* Elements in the stack arrays. */
8 typedef struct _window_state
9 {
10   Window        window;
11   Position      x;
12   Position      y;
13   Dimension     width;
14   Dimension     height;
15   Dimension     label_width;
16   Dimension     toggle_width;
17 } window_state;
18
19
20 /* New fields for the XlwMenu widget instance record */
21 typedef struct _XlwMenu_part 
22 {
23   /* slots set by the resources */
24
25 #ifdef NEED_MOTIF
26   XmFontList    font_list;
27   XmFontList    font_list_2;
28   XmFontList    fallback_font_list;
29 #else
30   XFontStruct * font;
31 # ifdef USE_XFONTSET
32   XFontSet font_set;
33 # endif
34 #endif
35   Dimension     font_ascent, font_descent;  /* extracted from font/fontlist */
36
37   Pixel         foreground;
38   Pixel         button_foreground;
39   Pixel         highlight_foreground;
40   Pixel         title_foreground;
41   Dimension     margin;
42   Dimension     horizontal_margin;
43   Dimension     vertical_margin;
44   Dimension     column_spacing;
45   Dimension     shadow_thickness;
46   Dimension     indicator_size;
47   Pixel         top_shadow_color;
48   Pixel         bottom_shadow_color;
49   Pixel         select_color;
50   Pixmap        top_shadow_pixmap;
51   Pixmap        bottom_shadow_pixmap;
52   Cursor        cursor_shape;
53   XtCallbackList        open;
54   XtCallbackList        select;
55   widget_value* contents;
56   int           horizontal;
57   Boolean       use_backing_store;
58   Boolean       bounce_down;
59   Boolean       lookup_labels;
60   
61   /* State of the XlwMenu */
62   int                   old_depth;
63   widget_value**        old_stack;
64   int                   old_stack_length;
65
66   /* New state after the user moved */
67   int                   new_depth;
68   widget_value**        new_stack;
69   int                   new_stack_length;
70
71   /* Window resources */
72   window_state*         windows;
73   int                   windows_length;
74
75   /* Internal part, set by the XlwMenu */
76   GC                    foreground_gc;
77   GC                    button_gc;
78   GC                    background_gc;
79   GC                    inactive_gc;
80   GC                    inactive_button_gc;
81   GC                    shadow_top_gc;
82   GC                    shadow_bottom_gc;
83   GC                    select_gc;
84   GC                    highlight_gc;
85   GC                    title_gc;
86   Cursor                cursor;
87   Boolean               popped_up;
88   Pixmap                gray_pixmap;
89
90   /* Stay-up stuff */
91   Boolean               pointer_grabbed;
92   Boolean               next_release_must_exit;
93   Time                  menu_post_time, menu_bounce_time;
94   widget_value *        last_selected_val;
95 } XlwMenuPart;
96
97 /* Full instance record declaration */
98 typedef struct _XlwMenuRec 
99 {
100   CorePart      core;
101   XlwMenuPart   menu;
102 } XlwMenuRec;
103
104 /* New fields for the XlwMenu widget class record */
105 typedef struct 
106 {
107   int   dummy;
108 } XlwMenuClassPart;
109
110 /* Full class record declaration. */
111 typedef struct _XlwMenuClassRec 
112 {
113   CoreClassPart         core_class;
114   XlwMenuClassPart      menu_class;
115 } XlwMenuClassRec;
116
117 /* Class pointer. */
118 extern XlwMenuClassRec xlwMenuClassRec;
119
120 #endif /* _XlwMenuP_h */