Mercurial > hg > xemacs-beta
annotate lwlib/xlwmenuP.h @ 934:c925bacdda60
[xemacs-hg @ 2002-07-29 09:21:12 by michaels]
2002-07-17 Marcus Crestani <crestani@informatik.uni-tuebingen.de>
Markus Kaltenbach <makalten@informatik.uni-tuebingen.de>
Mike Sperber <mike@xemacs.org>
configure flag to turn these changes on: --use-kkcc
First we added a dumpable flag to lrecord_implementation. It shows,
if the object is dumpable and should be processed by the dumper.
* lrecord.h (struct lrecord_implementation): added dumpable flag
(MAKE_LRECORD_IMPLEMENTATION): fitted the different makro definitions
to the new lrecord_implementation and their calls.
Then we changed mark_object, that it no longer needs a mark method for
those types that have pdump descritions.
* alloc.c:
(mark_object): If the object has a description, the new mark algorithm
is called, and the object is marked according to its description.
Otherwise it uses the mark method like before.
These procedures mark objects according to their descriptions. They
are modeled on the corresponding pdumper procedures.
(mark_with_description):
(get_indirect_count):
(structure_size):
(mark_struct_contents):
These procedures still call mark_object, this is needed while there are
Lisp_Objects without descriptions left.
We added pdump descriptions for many Lisp_Objects:
* extents.c: extent_auxiliary_description
* database.c: database_description
* gui.c: gui_item_description
* scrollbar.c: scrollbar_instance_description
* toolbar.c: toolbar_button_description
* event-stream.c: command_builder_description
* mule-charset.c: charset_description
* device-msw.c: devmode_description
* dialog-msw.c: mswindows_dialog_id_description
* eldap.c: ldap_description
* postgresql.c: pgconn_description
pgresult_description
* tooltalk.c: tooltalk_message_description
tooltalk_pattern_description
* ui-gtk.c: emacs_ffi_description
emacs_gtk_object_description
* events.c:
* events.h:
* event-stream.c:
* event-Xt.c:
* event-gtk.c:
* event-tty.c:
To write a pdump description for Lisp_Event, we converted every struct
in the union event to a Lisp_Object. So we created nine new
Lisp_Objects: Lisp_Key_Data, Lisp_Button_Data, Lisp_Motion_Data,
Lisp_Process_Data, Lisp_Timeout_Data, Lisp_Eval_Data,
Lisp_Misc_User_Data, Lisp_Magic_Data, Lisp_Magic_Eval_Data.
We also wrote makro selectors and mutators for the fields of the new
designed Lisp_Event and added everywhere these new abstractions.
We implemented XD_UNION support in (mark_with_description), so
we can describe exspecially console/device specific data with XD_UNION.
To describe with XD_UNION, we added a field to these objects, which
holds the variant type of the object. This field is initialized in
the appendant constructor. The variant is an integer, it has also to
be described in an description, if XD_UNION is used.
XD_UNION is used in following descriptions:
* console.c: console_description
(get_console_variant): returns the variant
(create_console): added variant initialization
* console.h (console_variant): the different console types
* console-impl.h (struct console): added enum console_variant contype
* device.c: device_description
(Fmake_device): added variant initialization
* device-impl.h (struct device): added enum console_variant devtype
* objects.c: image_instance_description
font_instance_description
(Fmake_color_instance): added variant initialization
(Fmake_font_instance): added variant initialization
* objects-impl.h (struct Lisp_Color_Instance): added color_instance_type
* objects-impl.h (struct Lisp_Font_Instance): added font_instance_type
* process.c: process_description
(make_process_internal): added variant initialization
* process.h (process_variant): the different process types
author | michaels |
---|---|
date | Mon, 29 Jul 2002 09:21:25 +0000 |
parents | 8de8e3f6228a |
children | ad2f4ae9895b |
rev | line source |
---|---|
440 | 1 #ifndef INCLUDED_xlwmenuP_h_ |
2 #define INCLUDED_xlwmenuP_h_ | |
428 | 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 | |
440 | 120 #endif /* INCLUDED_xlwmenuP_h_ */ |