Renamed AS_WINDOW_TITLE to AS_SET_WINDOW_TITLE.
Fixed handling in ServerWindow as stippi's latest commit broke it. It's now properly done with a separate ServerWindow::SetTitle() method, that will also take care to rename the window's thread. Changed naming the window thread in the app_server to "w:<team>:<title>". git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13461 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
7942339dee
commit
2b1246d968
@ -79,7 +79,7 @@ enum {
|
||||
AS_BEGIN_UPDATE,
|
||||
AS_END_UPDATE,
|
||||
AS_NEEDS_UPDATE,
|
||||
AS_WINDOW_TITLE,
|
||||
AS_SET_WINDOW_TITLE,
|
||||
AS_ADD_TO_SUBSET,
|
||||
AS_REM_FROM_SUBSET,
|
||||
AS_SET_ALIGNMENT,
|
||||
|
@ -1446,7 +1446,7 @@ BWindow::SetTitle(const char *title)
|
||||
|
||||
// we notify the app_server so we can actually see the change
|
||||
if (Lock()) {
|
||||
fLink->StartMessage(AS_WINDOW_TITLE);
|
||||
fLink->StartMessage(AS_SET_WINDOW_TITLE);
|
||||
fLink->AttachString(fTitle);
|
||||
fLink->Flush();
|
||||
Unlock();
|
||||
|
@ -128,9 +128,6 @@ ServerWindow::Init(BRect frame, uint32 look, uint32 feel, uint32 flags, uint32 w
|
||||
fLink.SetSenderPort(fClientReplyPort);
|
||||
fLink.SetReceiverPort(fMessagePort);
|
||||
|
||||
// char name[60];
|
||||
// snprintf(name, sizeof(name), "%ld: %s", fClientTeam, fTitle);
|
||||
|
||||
// We cannot call MakeWinBorder in the constructor, since it
|
||||
fWinBorder = MakeWinBorder(frame, fTitle, look, feel, flags, workspace);
|
||||
if (!fWinBorder)
|
||||
@ -149,7 +146,7 @@ ServerWindow::Run()
|
||||
BAutolock locker(this);
|
||||
|
||||
char name[B_OS_NAME_LENGTH];
|
||||
snprintf(name, sizeof(name), "w:%s", fTitle);
|
||||
snprintf(name, sizeof(name), "w:%ld:%s", ClientTeam(), Title());
|
||||
|
||||
// Spawn our message-monitoring thread
|
||||
fThread = spawn_thread(_message_thread, name, B_NORMAL_PRIORITY, this);
|
||||
@ -255,6 +252,34 @@ ServerWindow::Hide()
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ServerWindow::SetTitle(const char* newTitle)
|
||||
{
|
||||
const char* oldTitle = fTitle;
|
||||
|
||||
if (newTitle == NULL || !newTitle[0])
|
||||
fTitle = strdup("Unnamed Window");
|
||||
else
|
||||
fTitle = strdup(newTitle);
|
||||
|
||||
if (fTitle == NULL) {
|
||||
fTitle = oldTitle;
|
||||
return;
|
||||
}
|
||||
|
||||
free(const_cast<char*>(oldTitle));
|
||||
|
||||
if (Thread() >= B_OK) {
|
||||
char name[B_OS_NAME_LENGTH];
|
||||
snprintf(name, sizeof(name), "w:%ld:%s", ClientTeam(), fTitle);
|
||||
rename_thread(Thread(), name);
|
||||
}
|
||||
|
||||
if (fWinBorder != NULL)
|
||||
fWinBorder->SetName(newTitle);
|
||||
}
|
||||
|
||||
|
||||
//! Requests that the ServerWindow's BWindow quit
|
||||
void
|
||||
ServerWindow::NotifyQuitRequested()
|
||||
@ -1196,20 +1221,13 @@ myRootLayer->Unlock();
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case AS_WINDOW_TITLE:
|
||||
case AS_SET_WINDOW_TITLE:
|
||||
{
|
||||
|
||||
char* newTitle;
|
||||
if (link.ReadString(&newTitle) == B_OK) {
|
||||
printf("ServerWindow %s: Message SetTitle(\"%s\") requested, unimplemented\n",
|
||||
Title(), newTitle);
|
||||
|
||||
SetTitle(newTitle);
|
||||
free(newTitle);
|
||||
}
|
||||
char* title;
|
||||
link.ReadString(&title);
|
||||
fWinBorder->SetName(title);
|
||||
free(title);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -96,6 +96,8 @@ public:
|
||||
// to who we belong. who do we own. our title.
|
||||
inline ServerApp* App() const { return fServerApp; }
|
||||
inline const WinBorder* GetWinBorder() const { return fWinBorder; }
|
||||
|
||||
void SetTitle(const char* newTitle);
|
||||
inline const char* Title() const { return fTitle; }
|
||||
|
||||
// related thread/team_id(s).
|
||||
|
Loading…
Reference in New Issue
Block a user