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