1 /*
2  * Motif
3  *
4  * Copyright (c) 1987-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22 */
23 #ifndef _XmDisplayP_h
24 #define _XmDisplayP_h
25 
26 #include <Xm/DesktopP.h>
27 #include <Xm/VendorSEP.h>
28 #include <Xm/DropSMgr.h>
29 #include <Xm/Display.h>
30 #include <Xm/ScreenP.h>
31 
32 /* A little incest */
33 #include <Xm/DragCP.h>
34 #include <Xm/VirtKeysP.h>
35 
36 #include <Xm/TearOffP.h>
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 typedef Widget (*XmDisplayGetDisplayProc)(Display *);
43 
44 
45 typedef struct {
46     XmDisplayGetDisplayProc GetDisplay;
47     XtPointer               extension;
48 } XmDisplayClassPart;
49 
50 /*
51  * we make it a appShell subclass so it can have it's own instance
52  * hierarchy
53  */
54 typedef struct _XmDisplayClassRec{
55     CoreClassPart      		core_class;
56     CompositeClassPart 		composite_class;
57     ShellClassPart  		shell_class;
58     WMShellClassPart   		wm_shell_class;
59     VendorShellClassPart 	vendor_shell_class;
60     TopLevelShellClassPart 	top_level_shell_class;
61     ApplicationShellClassPart 	application_shell_class;
62     XmDisplayClassPart		display_class;
63 } XmDisplayClassRec;
64 
65 typedef struct _XmModalDataRec{
66     Widget                      wid;
67     XmVendorShellExtObject	ve;
68     XmVendorShellExtObject	grabber;
69     Boolean			exclusive;
70     Boolean			springLoaded;
71 } XmModalDataRec, *XmModalData;
72 
73 typedef struct {
74     unsigned char		dragInitiatorProtocolStyle;
75     unsigned char		dragReceiverProtocolStyle;
76 
77     unsigned char		userGrabbed; /* flag for menu vs dnd */
78 
79     WidgetClass			dragContextClass;
80     WidgetClass			dropTransferClass;
81     WidgetClass			dropSiteManagerClass;
82     XmDragContext		activeDC;
83     XmDropSiteManagerObject	dsm;
84     Time			lastDragTime;
85     Window			proxyWindow;
86 
87     XmModalData			modals;
88     Cardinal			numModals;
89     Cardinal			maxModals;
90     XtPointer			xmim_info;
91 
92     String			bindingsString;
93     XmVKeyBindingRec		*bindings;
94     XKeyEvent			*lastKeyEvent;			 /* unused */
95     unsigned char		keycode_tag[XmKEYCODE_TAG_SIZE]; /* unused */
96 
97     int				shellCount;
98     XtPointer			displayInfo;	/* extension */
99     XtPointer                   user_data;
100     int                         motif_version ;
101     XtEnum                      enable_warp ;
102     Cardinal			num_bindings;
103     XtCallbackList		dragStartCallback;
104     XtCallbackList		noFontCallback;
105     XtCallbackList		noRenditionCallback;
106     Boolean			displayHasShapeExtension;
107 
108     XtEnum			enable_btn1_transfer ;
109     Boolean			enable_button_tab ;
110     Boolean			enable_etched_in_menu;
111     Boolean			default_button_emphasis;
112     Boolean			enable_toggle_color;
113     Boolean			enable_toggle_visual;
114     Boolean			enable_drag_icon;
115     Boolean			enable_unselectable_drag;
116     Boolean                     enable_thin_thickness;
117     Boolean			enable_multi_key_bindings;
118 } XmDisplayPart, *XmDisplayPartPtr;
119 
120 typedef struct _XmDisplayInfo {
121   /* so much for information hiding */
122   Cursor	SashCursor;		/* Sash.c */
123   Widget	destinationWidget;	/* Dest.c */
124   Cursor	TearOffCursor;		/* TearOff.c */
125   XtPointer	UniqueStamp;		/* UniqueEvnt.c */
126   XmExcludedParentPaneRec excParentPane;/* TearOff.c */
127   unsigned short resetFocusFlag;	/* TravAct.c */
128   Boolean	traversal_in_progress;  /* Traversal.c */
129 } XmDisplayInfo;
130 
131 typedef struct _XmDisplayRec{
132     CorePart 		core;
133     CompositePart 	composite;
134     ShellPart 		shell;
135     WMShellPart		wm;
136     VendorShellPart	vendor;
137     TopLevelShellPart 	topLevel;
138     ApplicationShellPart application;
139     XmDisplayPart	display;
140 } XmDisplayRec;
141 
142 externalref XmDisplayClassRec 	xmDisplayClassRec;
143 
144 externalref String _Xm_MOTIF_DRAG_AND_DROP_MESSAGE ;
145 
146 
147 #ifdef __cplusplus
148 }  /* Close scope of 'extern "C"' declaration which encloses file. */
149 #endif
150 
151 #endif /* _XmDisplayP_h */
152 /* DON'T ADD STUFF AFTER THIS #endif */
153 
154