2 Copyright 1995-2008, The AROS Development Team. All rights reserved.
3 Copyright 2001-2003, The MorphOS Development Team. All Rights Reserved.
7 #include <proto/layers.h>
8 #include "intuition_intern.h"
9 #include "inputhandler_actions.h"
12 # include "renderwindowframe.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 /*****************************************************************************
31 #include <proto/intuition.h>
33 AROS_LH3(void, SetWindowTitles
,
36 AROS_LHA(struct Window
*, window
, A0
),
37 AROS_LHA(CONST_STRPTR
, windowTitle
, A1
),
38 AROS_LHA(CONST_STRPTR
, screenTitle
, A2
),
41 struct IntuitionBase
*, IntuitionBase
, 46, Intuition
)
44 Changes the current window and/or the screen title.
47 window - Change the title for this window or the screen which the
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
62 You should be careful with specifying a screen title because that
63 may irritate the user.
73 *****************************************************************************/
77 struct SetWindowTitlesActionMsg msg
;
82 msg
.windowTitle
= windowTitle
;
83 msg
.screenTitle
= screenTitle
;
85 DoASyncAction((APTR
)int_setwindowtitles
, &msg
.msg
, sizeof(msg
), IntuitionBase
);
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
;
98 LOCKWINDOWLAYERS(window
);
100 /* Change window's title */
101 if (windowTitle
== (CONST_STRPTR
)~0)
107 /* FIXME: Should we be strdup()ing this? */
108 window
->Title
= (UBYTE
*)windowTitle
;
110 if (strncmp(windowTitle
,IW(window
)->titlebuffer
,TITLEBUFFERLEN
) == 0) change
= FALSE
;
116 if (window
== GetPrivScreen(window
->WScreen
)->TitlebarBufferWin
) GetPrivScreen(window
->WScreen
)->TitlebarBufferWin
= 0;
118 int_RefreshWindowFrame(window
, REFRESHGAD_TOPBORDER
, 0, DOUBLEBUFFER
, IntuitionBase
);
121 /* Change screen's title */
122 if (screenTitle
!= (CONST_STRPTR
)~0)
124 //LONG lock = LockIBase(0);
126 /* FIXME: Should we be strdup()ing this? */
127 window
->ScreenTitle
= (UBYTE
*)screenTitle
;
129 if (window
->Flags
& (WFLG_WINDOWACTIVE
| WFLG_TOOLBOX
))
132 /* FIXME: Should we be strdup()ing this? */
133 window
->WScreen
->Title
= (UBYTE
*)screenTitle
;
135 window
->WScreen
->Title
= window
->WScreen
->DefaultTitle
;
137 RenderScreenBar(window
->WScreen
, FALSE
, IntuitionBase
);
142 UNLOCKWINDOWLAYERS(window
);