*** empty log message ***
[bpt/emacs.git] / lwlib / xlwmenuP.h
CommitLineData
44862e8e 1/* Internals of a lightweight menubar widget.
ba833b25 2 Copyright (C) 1999, 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
44862e8e
SM
3
4This file is part of the Lucid Widget Library.
5
6The Lucid Widget Library is free software; you can redistribute it and/or
7modify it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11The Lucid Widget Library is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Emacs; see the file COPYING. If not, write to the
18Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19Boston, MA 02111-1307, USA. */
20
07c30a5c
RS
21#ifndef _XlwMenuP_h
22#define _XlwMenuP_h
23
24#include "xlwmenu.h"
25#include <X11/CoreP.h>
26
27/* Elements in the stack arrays. */
28typedef struct _window_state
29{
30 Window window;
31 Position x;
32 Position y;
33 Dimension width;
34 Dimension height;
35 Dimension label_width;
7c2eb6d1
GM
36
37 /* Width of toggle buttons or radio buttons. */
38 Dimension button_width;
07c30a5c
RS
39} window_state;
40
41
42/* New fields for the XlwMenu widget instance record */
ba755702 43typedef struct _XlwMenu_part
07c30a5c
RS
44{
45 /* slots set by the resources */
423a3f59 46#ifdef HAVE_X_I18N
37484540 47 XFontSet fontSet;
423a3f59 48 XFontSetExtents *font_extents;
423a3f59 49#endif
37484540 50 XFontStruct* font;
98270d54 51 Pixel foreground;
ba755702 52 Pixel disabled_foreground;
07c30a5c
RS
53 Pixel button_foreground;
54 Dimension margin;
55 Dimension horizontal_spacing;
56 Dimension vertical_spacing;
57 Dimension arrow_spacing;
58 Dimension shadow_thickness;
59 Pixel top_shadow_color;
60 Pixel bottom_shadow_color;
61 Pixmap top_shadow_pixmap;
62 Pixmap bottom_shadow_pixmap;
98270d54 63 Cursor cursor_shape;
07c30a5c 64 XtCallbackList open;
ad45c495 65 XtCallbackList select, highlight;
07c30a5c
RS
66 widget_value* contents;
67 int horizontal;
457d47f8
GM
68
69 /* True means top_shadow_color and/or bottom_shadow_color must be freed. */
70 unsigned free_top_shadow_color_p : 1;
71 unsigned free_bottom_shadow_color_p : 1;
ba755702 72
07c30a5c 73 /* State of the XlwMenu */
244c93fe 74 int top_depth;
07c30a5c
RS
75 int old_depth;
76 widget_value** old_stack;
77 int old_stack_length;
78
79 /* New state after the user moved */
80 int new_depth;
81 widget_value** new_stack;
82 int new_stack_length;
83
84 /* Window resources */
85 window_state* windows;
86 int windows_length;
87
88 /* Internal part, set by the XlwMenu */
89 GC foreground_gc;
90 GC button_gc;
91 GC background_gc;
ba755702 92 GC disabled_gc;
07c30a5c
RS
93 GC inactive_button_gc;
94 GC shadow_top_gc;
95 GC shadow_bottom_gc;
96 Cursor cursor;
97 Boolean popped_up;
98 Pixmap gray_pixmap;
99} XlwMenuPart;
100
101/* Full instance record declaration */
ba755702 102typedef struct _XlwMenuRec
07c30a5c
RS
103{
104 CorePart core;
105 XlwMenuPart menu;
106} XlwMenuRec;
107
108/* New fields for the XlwMenu widget class record */
ba755702 109typedef struct
07c30a5c
RS
110{
111 int dummy;
112} XlwMenuClassPart;
113
114/* Full class record declaration. */
ba755702 115typedef struct _XlwMenuClassRec
07c30a5c
RS
116{
117 CoreClassPart core_class;
118 XlwMenuClassPart menu_class;
119} XlwMenuClassRec;
120
121/* Class pointer. */
122extern XlwMenuClassRec xlwMenuClassRec;
123
124#endif /* _XlwMenuP_h */
ab5796a9
MB
125
126/* arch-tag: 18d7fc41-ffa0-47a3-a49f-3469900c7a25
127 (do not change this comment) */