B_WINDOW_RESIZED sends int32 values, not floats.

Made message parsing more robust for a lot of messages.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13301 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2005-06-28 00:58:26 +00:00
parent c17904c587
commit 5727f0cfa2
+27 -32
View File
@@ -611,76 +611,71 @@ BWindow::DispatchMessage(BMessage *msg, BHandler *target)
case B_MINIMIZE: case B_MINIMIZE:
{ {
bool minimize; bool minimize;
msg->FindBool("minimize", &minimize); if (msg->FindBool("minimize", &minimize) == B_OK)
Minimize(minimize);
Minimize(minimize);
break; break;
} }
case B_WINDOW_RESIZED: case B_WINDOW_RESIZED:
{ {
float width, height; int32 width, height;
msg->FindFloat("width", &width); if (msg->FindInt32("width", &width) == B_OK
msg->FindFloat("height", &height); && msg->FindInt32("height", &height) == B_OK) {
fFrame.right = fFrame.left + width;
fFrame.bottom = fFrame.top + height;
fFrame.right = fFrame.left + width; FrameResized(width, height);
fFrame.bottom = fFrame.top + height; }
FrameResized(width, height);
break; break;
} }
case B_WINDOW_MOVED: case B_WINDOW_MOVED:
{ {
BPoint origin; BPoint origin;
msg->FindPoint("where", &origin); if (msg->FindPoint("where", &origin) == B_OK) {
fFrame.OffsetTo(origin);
fFrame.OffsetTo(origin); FrameMoved(origin);
}
FrameMoved(origin);
break; break;
} }
case B_WINDOW_ACTIVATED: case B_WINDOW_ACTIVATED:
{ {
bool active; bool active;
msg->FindBool("active", &active); if (msg->FindBool("active", &active) == B_OK) {
fActive = active;
fActive = active; handleActivation(active);
handleActivation(active); }
break; break;
} }
case B_SCREEN_CHANGED: case B_SCREEN_CHANGED:
{ {
BRect frame; BRect frame;
msg->FindRect("frame", &frame);
uint32 mode; uint32 mode;
msg->FindInt32("mode", (int32 *)&mode); if (msg->FindRect("frame", &frame) == B_OK
&& msg->FindInt32("mode", (int32 *)&mode) == B_OK)
ScreenChanged(frame, (color_space)mode); ScreenChanged(frame, (color_space)mode);
break; break;
} }
case B_WORKSPACE_ACTIVATED: case B_WORKSPACE_ACTIVATED:
{ {
uint32 workspace; uint32 workspace;
msg->FindInt32("workspace", (int32 *)&workspace);
bool active; bool active;
msg->FindBool("active", &active); if (msg->FindInt32("workspace", (int32 *)&workspace) == B_OK
&& msg->FindBool("active", &active) == B_OK)
WorkspaceActivated(workspace, active); WorkspaceActivated(workspace, active);
break; break;
} }
case B_WORKSPACES_CHANGED: case B_WORKSPACES_CHANGED:
{ {
uint32 oldWorkspace; uint32 oldWorkspace, newWorkspace;
msg->FindInt32("old", (int32 *)&oldWorkspace); if (msg->FindInt32("old", (int32 *)&oldWorkspace) == B_OK
uint32 newWorkspace; && msg->FindInt32("new", (int32 *)&newWorkspace) == B_OK)
msg->FindInt32("new", (int32 *)&newWorkspace); WorkspacesChanged(oldWorkspace, newWorkspace);
WorkspacesChanged(oldWorkspace, newWorkspace);
break; break;
} }