* lisp/progmodes/ruby-mode.el (ruby-brace-to-do-end): Don't add extra
[bpt/emacs.git] / lwlib / xlwmenuP.h
... / ...
CommitLineData
1/* Internals of a lightweight menubar widget.
2
3Copyright (C) 2002-2012 Free Software Foundation, Inc.
4Copyright (C) 1992 Lucid, Inc.
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
10the Free Software Foundation; either version 1, or (at your option)
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
20Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21Boston, MA 02110-1301, USA. */
22
23#ifndef _XlwMenuP_h
24#define _XlwMenuP_h
25
26#include "xlwmenu.h"
27#include <X11/CoreP.h>
28#ifdef HAVE_XFT
29#include <X11/Xft/Xft.h>
30#endif
31
32/* Elements in the stack arrays. */
33typedef struct _window_state
34{
35 Widget w;
36 Window window;
37 Pixmap pixmap;
38 Position x;
39 Position y;
40 Dimension width;
41 Dimension height;
42 Dimension label_width;
43 int max_rest_width;
44
45 /* Width of toggle buttons or radio buttons. */
46 Dimension button_width;
47#ifdef HAVE_XFT
48 XftDraw* xft_draw;
49#endif
50} window_state;
51
52
53/* New fields for the XlwMenu widget instance record */
54typedef struct _XlwMenu_part
55{
56 /* slots set by the resources */
57#ifdef HAVE_X_I18N
58 XFontSet fontSet;
59 XFontSetExtents *font_extents;
60#endif
61#ifdef HAVE_XFT
62 int default_face;
63 XftFont* xft_font;
64 XftColor xft_fg, xft_bg, xft_disabled_fg;
65#endif
66 String fontName;
67 XFontStruct* font;
68 Pixel foreground;
69 Pixel disabled_foreground;
70 Pixel button_foreground;
71 Dimension margin;
72 Dimension horizontal_spacing;
73 Dimension vertical_spacing;
74 Dimension arrow_spacing;
75 Dimension shadow_thickness;
76 Pixel top_shadow_color;
77 Pixel bottom_shadow_color;
78 Pixmap top_shadow_pixmap;
79 Pixmap bottom_shadow_pixmap;
80 Cursor cursor_shape;
81 XtCallbackList open;
82 XtCallbackList select, highlight;
83 XtCallbackList enter, leave;
84 widget_value* contents;
85 int horizontal;
86
87 /* True means top_shadow_color and/or bottom_shadow_color must be freed. */
88 unsigned free_top_shadow_color_p : 1;
89 unsigned free_bottom_shadow_color_p : 1;
90
91 /* State of the XlwMenu */
92 int top_depth;
93 int old_depth;
94 widget_value** old_stack;
95 int old_stack_length;
96 widget_value* inside_entry;
97
98 /* New state after the user moved */
99 int new_depth;
100 widget_value** new_stack;
101 int new_stack_length;
102
103 /* Window resources */
104 window_state* windows;
105 int windows_length;
106
107 /* Internal part, set by the XlwMenu */
108 GC foreground_gc;
109 GC button_gc;
110 GC background_gc;
111 GC disabled_gc;
112 GC inactive_button_gc;
113 GC shadow_top_gc;
114 GC shadow_bottom_gc;
115 Cursor cursor;
116 Boolean popped_up;
117 Pixmap gray_pixmap;
118} XlwMenuPart;
119
120/* Full instance record declaration */
121typedef struct _XlwMenuRec
122{
123 CorePart core;
124 XlwMenuPart menu;
125} XlwMenuRec;
126
127/* New fields for the XlwMenu widget class record */
128typedef struct
129{
130 int dummy;
131} XlwMenuClassPart;
132
133/* Full class record declaration. */
134typedef struct _XlwMenuClassRec
135{
136 CoreClassPart core_class;
137 XlwMenuClassPart menu_class;
138} XlwMenuClassRec;
139
140/* Class pointer. */
141extern XlwMenuClassRec xlwMenuClassRec;
142
143#endif /* _XlwMenuP_h */
144