From 0b9056c784bd11c4e88cc131a62e8cdf64784903 Mon Sep 17 00:00:00 2001 From: Adi Oanca Date: Mon, 7 Feb 2005 00:45:59 +0000 Subject: [PATCH] BMessages which reach BWindow now take full advantage of application_kit's power in sending BMessages to BHandlers git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11282 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/server/RootLayer.cpp | 6 ++---- src/servers/app/server/ServerWindow.cpp | 8 +++++--- src/servers/app/server/ServerWindow.h | 5 ++++- src/servers/app/server/WinBorder.cpp | 8 +++----- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/servers/app/server/RootLayer.cpp b/src/servers/app/server/RootLayer.cpp index 0a5a525fb3..3f674a526d 100644 --- a/src/servers/app/server/RootLayer.cpp +++ b/src/servers/app/server/RootLayer.cpp @@ -1301,9 +1301,8 @@ void RootLayer::KeyboardEventHandler(int32 code, BPortLink& msg) } keymsg.AddString("bytes",string); // keymsg.AddInt32("raw_char",raw_char); - keymsg.AddInt32("haiku:token", target->fViewToken); - win->SendMessageToClient(&keymsg); + win->SendMessageToClient(&keymsg, B_NULL_TOKEN, true); } } @@ -1397,9 +1396,8 @@ void RootLayer::KeyboardEventHandler(int32 code, BPortLink& msg) } keymsg.AddString("bytes",string); keymsg.AddInt32("raw_char",raw_char); - keymsg.AddInt32("haiku:token", target->fViewToken); - win->SendMessageToClient(&keymsg); + win->SendMessageToClient(&keymsg, B_NULL_TOKEN, true); } } diff --git a/src/servers/app/server/ServerWindow.cpp b/src/servers/app/server/ServerWindow.cpp index fc6216b415..43e58793d2 100644 --- a/src/servers/app/server/ServerWindow.cpp +++ b/src/servers/app/server/ServerWindow.cpp @@ -51,6 +51,7 @@ #include "DisplayDriver.h" #include "ServerPicture.h" #include "Workspace.h" +#include "MessagePrivate.h" //#define DEBUG_SERVERWINDOW //#define DEBUG_SERVERWINDOW_MOUSE @@ -2285,16 +2286,17 @@ Layer* ServerWindow::FindLayer(const Layer* start, int32 token) const return NULL; } //------------------------------------------------------------------------------ -void ServerWindow::SendMessageToClient(const BMessage* msg) const +void ServerWindow::SendMessageToClient(const BMessage* msg, int32 target, bool usePreferred) const { ssize_t size; char *buffer; - + size = msg->FlattenedSize(); buffer = new char[size]; if (msg->Flatten(buffer, size) == B_OK) - write_port(fClientLooperPort, msg->what, buffer, size); + BMessage::Private::SendFlattenedMessage(buffer, size, + fClientLooperPort, target, usePreferred, B_INFINITE_TIMEOUT); else printf("PANIC: ServerWindow %s: can't flatten message in 'SendMessageToClient()'\n", fTitle.String()); diff --git a/src/servers/app/server/ServerWindow.h b/src/servers/app/server/ServerWindow.h index 7d1dfe2a50..422990d29f 100644 --- a/src/servers/app/server/ServerWindow.h +++ b/src/servers/app/server/ServerWindow.h @@ -36,6 +36,7 @@ #include #include #include +#include "TokenSpace.h" #include "FMWList.h" class BString; @@ -96,7 +97,9 @@ public: // util methods. Layer *FindLayer(const Layer *start, int32 token) const; - void SendMessageToClient( const BMessage *msg ) const; + void SendMessageToClient(const BMessage* msg, + int32 target = B_NULL_TOKEN, + bool usePreferred = false) const; // a few, not that important methods returning some internal settings. int32 Look(void) const { return fLook; } diff --git a/src/servers/app/server/WinBorder.cpp b/src/servers/app/server/WinBorder.cpp index 05ac54bc8a..85763b94e8 100644 --- a/src/servers/app/server/WinBorder.cpp +++ b/src/servers/app/server/WinBorder.cpp @@ -31,6 +31,7 @@ #include #include "PortLink.h" #include "View.h" // for mouse button defines +#include "MessagePrivate.h" #include "ServerWindow.h" #include "Decorator.h" #include "DisplayDriver.h" @@ -41,7 +42,6 @@ #include "Globals.h" #include "RootLayer.h" #include "Workspace.h" -#include "TokenSpace.h" // Toggle general function call output //#define DEBUG_WINBORDER @@ -229,9 +229,8 @@ void WinBorder::MouseDown(PointerEvent& evt, bool sendMessage) msg.AddInt32("modifiers", evt.modifiers); msg.AddInt32("buttons", evt.buttons); msg.AddInt32("clicks", evt.clicks); - msg.AddInt32("haiku:token", target? target->fViewToken: B_NULL_TOKEN); - Window()->SendMessageToClient(&msg); + Window()->SendMessageToClient(&msg, target->fViewToken, false); } fLastMousePosition = evt.where; @@ -368,9 +367,8 @@ void WinBorder::MouseUp(PointerEvent& evt) upmsg.AddInt64("when",evt.when); upmsg.AddPoint("where",evt.where); upmsg.AddInt32("modifiers",evt.modifiers); - upmsg.AddInt32("haiku:token", target? target->fViewToken: B_NULL_TOKEN); - Window()->SendMessageToClient(&upmsg); + Window()->SendMessageToClient(&upmsg, target->fViewToken, false); } }