some fixes to accented characters
[tangerine.git] / rom / intuition / hidewindow.c
blob7e73acb00a730bfc550f5330acd3e489cd4d7e38
1 /*
2 Copyright © 1995-2007, The AROS Development Team. All rights reserved.
3 Copyright © 2001-2003, The MorphOS Development Team. All Rights Reserved.
4 $Id$
5 */
7 #include <proto/layers.h>
8 #include "showhide.h"
9 #include "intuition_intern.h"
10 #include "inputhandler_actions.h"
12 #ifdef CGXSHOWHIDESUPPORT
13 #undef ChangeLayerVisibility
14 struct HideWindowActionMsg
16 struct IntuiActionMsg msg;
17 struct Window *window;
20 static VOID int_hidewindow(struct HideWindowActionMsg *msg,
21 struct IntuitionBase *IntuitionBase);
22 #endif
24 #ifdef ChangeLayerVisibility
25 struct HideWindowActionMsg
27 struct IntuiActionMsg msg;
28 struct Window *window;
31 static VOID int_hidewindow(struct HideWindowActionMsg *msg,
32 struct IntuitionBase *IntuitionBase);
33 #endif
35 /*****************************************************************************
37 NAME */
38 #include <proto/intuition.h>
40 AROS_LH1(VOID, HideWindow,
42 /* SYNOPSIS */
43 AROS_LHA(struct Window *, window, A0),
45 /* LOCATION */
46 struct IntuitionBase *, IntuitionBase, 141, Intuition)
48 /* FUNCTION
49 Make a window invisible.
51 INPUTS
52 window - The window to affect.
54 RESULT
56 NOTES
58 EXAMPLE
60 BUGS
62 SEE ALSO
64 INTERNALS
66 HISTORY
68 *****************************************************************************/
70 AROS_LIBFUNC_INIT
72 #ifdef CGXSHOWHIDESUPPORT
73 struct HideWindowActionMsg msg;
75 DEBUG_HIDEWINDOW(dprintf("HideWindow: Window 0x%lx\n", (ULONG) window));
77 SANITY_CHECK(window)
78 if (window->Flags & WFLG_BACKDROP) return;
80 msg.window = window;
81 DoASyncAction((APTR)int_hidewindow, &msg.msg, sizeof(msg), IntuitionBase);
82 #endif
84 #ifdef ChangeLayerVisibility
85 struct HideWindowActionMsg msg;
87 DEBUG_HIDEWINDOW(dprintf("HideWindow: Window 0x%lx\n", window));
89 msg.window = window;
90 DoASyncAction((APTR)int_hidewindow, &msg.msg, sizeof(msg), IntuitionBase);
91 #endif
93 AROS_LIBFUNC_EXIT
94 } /* HideWindow */
97 #ifdef CGXSHOWHIDESUPPORT
98 static VOID int_hidewindow(struct HideWindowActionMsg *msg,
99 struct IntuitionBase *IntuitionBase)
101 struct Window *window = msg->window;
102 struct Library *CGXSystemBase;
104 if (!window) return;
106 if (!ResourceExisting(window, RESOURCE_WINDOW, IntuitionBase)) return;
108 if (window->Flags & WFLG_BACKDROP) return;
110 if (((struct IntWindow *)(window))->specialflags & SPFLAG_NOICONIFY) return;
112 if ((CGXSystemBase = OpenLibrary("cgxsystem.library", 0)))
114 CGXHideWindow(window);
115 ((struct IntWindow *)(window))->specialflags |= SPFLAG_ICONIFIED;
116 CloseLibrary(CGXSystemBase);
119 #endif
121 #ifdef ChangeLayerVisibility
122 static VOID int_hidewindow(struct HideWindowActionMsg *msg,
123 struct IntuitionBase *IntuitionBase)
125 struct Window *window = msg->window;
126 struct Screen *screen;
128 if (!ResourceExisting(window, RESOURCE_WINDOW, IntuitionBase)) return;
130 screen = window->WScreen;
132 if (IsWindowVisible(window))
134 struct Requester *req;
136 LOCK_REFRESH(screen);
138 if (BLAYER(window))
140 ChangeLayerVisibility(BLAYER(window), FALSE);
142 ChangeLayerVisibility(WLAYER(window), FALSE);
144 for (req = window->FirstRequest; req; req = req->OlderRequest)
146 ChangeLayerVisibility(req->ReqLayer, FALSE);
149 UNLOCK_REFRESH(screen);
151 CheckLayers(screen, IntuitionBase);
154 #endif