exec/tasks.h: Only evaluate the argument to the ETask helper macros once
[AROS.git] / rom / intuition / openwindowtaglist.c
blob80d955fd8951e63e3a6fcde34eaaa78d250a208e
1 /*
2 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
3 Copyright © 2001-2003, The MorphOS Development Team. All Rights Reserved.
4 $Id$
5 */
7 #include <proto/utility.h>
8 #include "intuition_intern.h"
9 #include <utility/tagitem.h>
10 #include <proto/exec.h>
12 /*****************************************************************************
14 NAME */
15 #include <proto/intuition.h>
17 AROS_LH2(struct Window *, OpenWindowTagList,
19 /* SYNOPSIS */
20 AROS_LHA(struct NewWindow *, newWindow, A0),
21 AROS_LHA(struct TagItem *, tagList, A1),
23 /* LOCATION */
24 struct IntuitionBase *, IntuitionBase, 101, Intuition)
26 /* FUNCTION
27 Open a new window.
29 INPUTS
30 NewWindow - structure with window specification. This is for
31 compatibility with OpenWindow() and usually set to NULL
32 tagList - tags which specify appearance and behaviour of the window
34 TAGS
35 WA_Left - Left edge of the window
36 WA_Top - Top edge of the window
37 WA_Width - Width of the window
38 WA_Height - Height of the window
39 WA_DetailPen - Pen number for window details (obsolete)
40 WA_BlockPen - Pen number for filled blocks (obsolete)
41 WA_IDCMP - Define what events should send messages to your task
43 WA_Flags
44 Initial values for various boolean window properties. Can be
45 overwritten by WA_... tags.
47 WA_Gadgets (struct Gadget *)
48 Pointer to a linked list of gadgets
50 WA_Title (STRPTR) - Window title string
52 WA_CustomScreen (struct Screen *)
53 Open window on the given screen
55 WA_SuperBitMap (struct BitMap *)
56 Create window with superbitmap refreshing
58 WA_MinWidth - Minimum width of the window
59 WA_MinHeight - Minimum height of the window
60 WA_MaxWidth - Maximum width of the window
61 WA_MaxHeight - Maximum height of the window
62 Use 0 to keep the current size as limit. The maximums can be
63 set to -1 or ~0 to limit size only to screen dimension.
65 WA_SizeGadget (BOOL) - Make window resizeable
66 WA_DragBar (BOOL) - Make window dragable
67 WA_DepthGadget (BOOL) - Add a depth gadget
68 WA_CloseGadget (BOOL) - Add a close gadget
70 WA_Backdrop (BOOL)
71 Create a window which is placed behind other windows
73 WA_ReportMouse (BOOL) - Store mouse position in struct Window
75 WA_NoCareRefresh (BOOL)
76 Use this if you don't want to be responsible for calling
77 BeginRefresh()/EndRefresh().
79 WA_Borderless (BOOL) - Create borderless window
81 WA_Activate (BOOL)
82 Make this window the active one, i.e. it
83 receives the input from mouse and keyboard.
85 WA_RMBTrap (BOOL)
86 Set to TRUE if you want to get button events
87 events for the right mouse button.
89 WA_SimpleRefresh (BOOL)
90 Enable simplerefresh mode. Only specify if TRUE.
92 WA_SmartRefresh (BOOL)
93 Enable smartrefresh mode. Only specify if TRUE.
95 WA_SizeBRight (BOOL) - Place size gadget in right window border
96 WA_SizeBBottom (BOOL) - Place size gadget in bottom window border
98 WA_GimmeZeroZero (BOOL)
99 Create a GimmeZeroZero window. The window borders have their own layer,
100 so you can't overdraw it. The coordinate 0,0 is related to the inner
101 area of the window. This makes handling of windows easier, but it
102 slows down the system.
104 WA_NewLookMenus (BOOL)
105 Use DrawInfo colors for rendering the menu bar.
107 WA_ScreenTitle (STRPTR)
108 Screen title which is shown when window is active.
110 WA_AutoAdjust (BOOL)
111 TRUE means that Intuition can move or shrink the window
112 to fit on the screen, within the limits given with
113 WA_MinWidth and WA_MinHeight. This attribute defaults
114 to TRUE when you call OpenWindowTags() with a NULL pointer
115 for NewWindow.
117 WA_InnerWidth
118 WA_InnerHeight
119 Dimensions of the interior region of the window.
121 Note that this restricts border gadgets:
122 - GACT_LEFTBORDER gadgets can't be GFLG_RELWIDTH if
123 WA_InnerWidth is used.
124 - GACT_RIGHTBORDER gadgets must be GFLG_RELRIGHT if
125 WA_InnerWidth is used.
126 - GACT_TOPBORDER gadgets can't be GFLG_RELHEIGHT if
127 WA_InnerHeight is used.
128 - GACT_BOTTOMBORDER gadgets must be GFLG_RELBOTTOM if
129 WA_InnerHeight is used.
131 WA_PubScreen (struct Screen *)
132 Open the window on the public screen with the given address.
133 An address of NULL means default public screen. You're
134 responsible that the screen stays open until OpenWindowTags()
135 has finished, i.e.
136 you're the owner of the screen,
137 you have already a window open on the screen
138 or you use LockPubScreen()
140 WA_PubScreenName (STRPTR)
141 Open the window on the public screen with the given name.
143 WA_PubScreenFallBack (BOOL)
144 TRUE means that the default public screen can be used if
145 the specified named public screen is not available.
147 WA_Zoom (WORD *)
148 4 WORD's define the initial Left/Top/Width/Height of the
149 alternative zoom position/dimension. This adds a zoom
150 gadget to the window. If both left and top are set to ~0
151 the window will only be resized.
153 WA_MouseQueue
154 Limits the number of possible mousemove messages. Can
155 be changed with SetMouseQueue().
157 WA_RptQueue
158 Limits the number of possible repeated IDCMP_RAWKEY,
159 IDCMP_VANILLAKEY and IDCMP_IDCMPUPDATE messages.
161 WA_BackFill (struct Hook *)
162 Function to be called for backfilling
164 WA_MenuHelp (BOOL)
165 Enables menuhelp. Pressing the help key during menu handling
166 sends IDCMP_MENUHELP messages.
168 WA_NotifyDepth (BOOL)
169 If TRUE send IDCMP_CHANGEWINDOW events when window is
170 depth arranged. Code field will be CWCODE_DEPTH.
172 WA_Checkmark (struct Image *)
173 Image to use as a checkmark in menus.
175 WA_AmigaKey (struct Image *)
176 Image to use as the Amiga-key symbol in menus.
178 WA_Pointer (APTR)
179 The pointer to associate with the window. Use NULL
180 for the Preferences default pointer. You can create
181 custom pointers with NewObject() on "pointerclass".
182 Default: NULL.
184 WA_BusyPointer (BOOL)
185 Enable the Preferences busy-pointer.
186 Default: FALSE.
188 WA_PointerDelay (BOOL)
189 Set this to TRUE to delay change of the pointer image.
190 This avoids flickering of the mouse pointer when it's
191 changed for short times.
193 WA_HelpGroup (ULONG)
194 Get IDCMP_GADGETHELP messages not only from the active
195 window, but from all its windows.
196 You have to get a help ID with utility.library/GetUniqueID()
197 and use it as data for WA_HelpGroup for all windows.
199 WA_HelpGroupWindow (struct Window *)
200 Alternative for WA_HelpGroup. Use the helpgroup of
201 another window.
203 WA_TabletMessages (BOOL)
204 Request extended tablet data.
205 Default: FALSE
207 WA_ToolBox (BOOL)
208 Make this window a toolbox window
210 WA_Parent (struct Window *)
211 Make the window a child of the given window.
213 WA_Visible (BOOL)
214 Make window visible.
215 Default: TRUE
217 WA_ShapeRegion (struct Region *)
219 WA_ShapeHook (struct Hook *)
222 RESULT
223 A pointer to the new window or NULL if it couldn't be
224 opened. Reasons for this might be lack of memory or illegal
225 attributes.
227 NOTES
229 EXAMPLE
231 BUGS
233 SEE ALSO
235 INTERNALS
237 HISTORY
238 29-10-95 digulla automatically created from
239 intuition_lib.fd and clib/intuition_protos.h
241 *****************************************************************************/
243 AROS_LIBFUNC_INIT
245 struct ExtNewWindow nw =
247 0, 0, /* Left, Top */
248 ~0, ~0, /* Width, Height */
249 0xFF, 0xFF, /* DetailPen, BlockPen */
250 0L, /* IDCMPFlags */
251 0L, /* Flags */
252 NULL, /* FirstGadget */
253 NULL, /* CheckMark */
254 NULL, /* Title */
255 NULL, /* Screen */
256 NULL, /* BitMap */
257 0, 0, /* MinWidth, MinHeight */
258 0, 0, /* MaxWidth, MaxHeight */
259 WBENCHSCREEN, /* Type */
260 NULL /* Extension (taglist) */
262 struct Window *window;
264 DEBUG_OPENWINDOWTAGLIST(dprintf("OpenWindowTagList: NewWindow 0x%lx TagList 0x%lx\n",
265 newWindow, tagList));
267 if (newWindow)
269 ASSERT_VALID_PTR_ROMOK(newWindow);
271 CopyMem (newWindow, &nw, (newWindow->Flags & WFLG_NW_EXTENDED) ? sizeof (struct ExtNewWindow) :
272 sizeof (struct NewWindow));
274 if (tagList)
276 ASSERT_VALID_PTR_ROMOK(tagList);
278 nw.Extension = tagList;
279 nw.Flags |= WFLG_NW_EXTENDED;
282 else
284 struct TagItem tags[2] =
286 {WA_AutoAdjust , TRUE },
287 {TAG_END , 0}
290 nw.Extension = tags;
291 nw.Flags |= WFLG_NW_EXTENDED;
293 if (tagList)
295 ASSERT_VALID_PTR_ROMOK(tagList);
297 tags[1].ti_Tag = TAG_MORE;
298 tags[1].ti_Data = (IPTR)tagList;
303 window = OpenWindow ((struct NewWindow *)&nw);
305 return window;
307 AROS_LIBFUNC_EXIT
309 } /* OpenWindowTagList */