Updated PCI IDs to latest snapshot.
[tangerine.git] / rom / intuition / setwindowtitles.c
blob5ef57c0d33b8154caab7ba44a01abd1f68307c0e
1 /*
2 Copyright 1995-2008, 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 "intuition_intern.h"
9 #include "inputhandler_actions.h"
11 #ifdef __MORPHOS__
12 # include "renderwindowframe.h"
13 #endif
15 #include <string.h>
17 struct SetWindowTitlesActionMsg
19 struct IntuiActionMsg msg;
20 struct Window *window;
21 CONST_STRPTR windowTitle;
22 CONST_STRPTR screenTitle;
25 static VOID int_setwindowtitles(struct SetWindowTitlesActionMsg *msg,
26 struct IntuitionBase *IntuitionBase);
28 /*****************************************************************************
30 NAME */
31 #include <proto/intuition.h>
33 AROS_LH3(void, SetWindowTitles,
35 /* SYNOPSIS */
36 AROS_LHA(struct Window *, window, A0),
37 AROS_LHA(CONST_STRPTR, windowTitle, A1),
38 AROS_LHA(CONST_STRPTR, screenTitle, A2),
40 /* LOCATION */
41 struct IntuitionBase *, IntuitionBase, 46, Intuition)
43 /* FUNCTION
44 Changes the current window and/or the screen title.
46 INPUTS
47 window - Change the title for this window or the screen which the
48 window contains.
49 windowTitle - New title for the window or ((UBYTE *)~0L) to keep the
50 old title or NULL for no title. If you specify a string,
51 this string is *NOT* copied.
52 screenTitle - New title for the screen of the window or ((UBYTE *)~0L)
53 to keep the old title or NULL for no title. If you specify
54 a title for the screen, this title will be shown when the
55 window becomes active. If you specify a string, this string
56 is *NOT* copied.
58 RESULT
59 None.
61 NOTES
62 You should be careful with specifying a screen title because that
63 may irritate the user.
65 EXAMPLE
67 BUGS
69 SEE ALSO
71 INTERNALS
73 *****************************************************************************/
75 AROS_LIBFUNC_INIT
77 struct SetWindowTitlesActionMsg msg;
79 SANITY_CHECK(window)
81 msg.window = window;
82 msg.windowTitle = windowTitle;
83 msg.screenTitle = screenTitle;
85 DoASyncAction((APTR)int_setwindowtitles , &msg.msg, sizeof(msg), IntuitionBase);
87 AROS_LIBFUNC_EXIT
88 } /* SetWindowTitles */
90 static VOID int_setwindowtitles(struct SetWindowTitlesActionMsg *msg,
91 struct IntuitionBase *IntuitionBase)
93 struct Window *window = msg->window;
94 CONST_STRPTR windowTitle = msg->windowTitle;
95 CONST_STRPTR screenTitle = msg->screenTitle;
96 BOOL change = TRUE;
98 LOCKWINDOWLAYERS(window);
100 /* Change window's title */
101 if (windowTitle == (CONST_STRPTR)~0)
103 change = FALSE;
105 else
107 window->Title = windowTitle;
108 if (windowTitle)
109 if (strncmp(windowTitle,IW(window)->titlebuffer,TITLEBUFFERLEN) == 0) change = FALSE;
112 if (change)
114 #ifdef __MORPHOS__
115 if (window == GetPrivScreen(window->WScreen)->TitlebarBufferWin) GetPrivScreen(window->WScreen)->TitlebarBufferWin = 0;
116 #endif
117 int_RefreshWindowFrame(window, REFRESHGAD_TOPBORDER, 0, DOUBLEBUFFER, IntuitionBase);
120 /* Change screen's title */
121 if (screenTitle != (CONST_STRPTR)~0)
123 //LONG lock = LockIBase(0);
125 window->ScreenTitle = screenTitle;
127 if (window->Flags & (WFLG_WINDOWACTIVE | WFLG_TOOLBOX))
129 if (screenTitle)
130 window->WScreen->Title = screenTitle;
131 else
132 window->WScreen->Title = window->WScreen->DefaultTitle;
134 //UnlockIBase(lock);
135 RenderScreenBar(window->WScreen, FALSE, IntuitionBase);
138 UNLOCKWINDOWLAYERS(window);