diff --git a/headers/private/interface/WindowInfo.h b/headers/private/interface/WindowInfo.h index 8e52d81eb2..739694324e 100644 --- a/headers/private/interface/WindowInfo.h +++ b/headers/private/interface/WindowInfo.h @@ -34,6 +34,8 @@ struct window_info { } _PACKED; struct client_window_info : window_info { + float tab_height; + float border_size; char name[1]; } _PACKED; diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index 72fbadcdc6..2510203240 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -2614,15 +2614,33 @@ Desktop::WriteWindowInfo(int32 serverToken, BPrivate::LinkSender& sender) window_info info; window->GetInfo(info); + float tabSize = 0.0; + float borderSize = 0.0; + ::Window* tmp = window->Window(); + if (tmp) { + BMessage message; + if (tmp->GetDecoratorSettings(&message)) { + BRect tabFrame; + message.FindRect("tab frame", &tabFrame); + tabSize = tabFrame.bottom - tabFrame.top; + message.FindFloat("border width", &borderSize); + } + } + + int32 decoratorInfo = 2 * sizeof(float); int32 length = window->Title() ? strlen(window->Title()) : 0; sender.StartMessage(B_OK); - sender.Attach(sizeof(window_info) + length + 1); + sender.Attach(sizeof(window_info) + decoratorInfo + length + 1); sender.Attach(&info, sizeof(window_info)); + sender.Attach(tabSize); + sender.Attach(borderSize); + if (length > 0) sender.Attach(window->Title(), length + 1); else sender.Attach('\0'); + sender.Flush(); }