From a3031ab19b800d85dc7d341ee2ce64dc4d1e488d Mon Sep 17 00:00:00 2001 From: DarkWyrm Date: Mon, 14 Jun 2004 20:32:21 +0000 Subject: [PATCH] Added cases for Minimize buttons in decorators Buttons on up-to-date decorators now work properly git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7957 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/server/ServerWindow.cpp | 21 +++++++++++++++++---- src/servers/app/server/WinBorder.cpp | 11 +++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/servers/app/server/ServerWindow.cpp b/src/servers/app/server/ServerWindow.cpp index eb2b3da0fd..8ea4021680 100644 --- a/src/servers/app/server/ServerWindow.cpp +++ b/src/servers/app/server/ServerWindow.cpp @@ -379,6 +379,10 @@ bool ServerWindow::IsHidden(void) void ServerWindow::Minimize(bool status) { + // This function doesn't need much -- check to make sure that we should and + // send the message to the client. According to the BeBook, the BWindow hook function + // does all the heavy lifting for us. :) + bool sendMessages = false; if (status) @@ -400,14 +404,12 @@ void ServerWindow::Minimize(bool status) if (sendMessages) { - BMessage msg; - msg.what = B_MINIMIZE; + BMessage msg; + msg.what = B_MINIMIZE; msg.AddInt64("when", real_time_clock_usecs()); msg.AddBool("minimize", status); SendMessageToClient(&msg); - - // TODO: Do we need to notify Tracker? The Deskbar? If so, how? } } @@ -2248,6 +2250,17 @@ int32 ServerWindow::MonitorWin(void *data) delete win; break; } + // TODO: This message is never received.... why? +/* case AS_QUIT_APP: + { + // We receive this _only_ when the server is shutting down. The app_server + // is not asking the app to quit - it's *telling* it to quit because + // in just a short time, the server itself is going to disappear. + + BMessage msg(_QUIT_); + win->SendMessageToClient(&msg); + } +*/ case B_QUIT_REQUESTED: { STRACE(("ServerWindow %s received Quit request\n",win->Title())); diff --git a/src/servers/app/server/WinBorder.cpp b/src/servers/app/server/WinBorder.cpp index a34f60accc..4f296531c1 100644 --- a/src/servers/app/server/WinBorder.cpp +++ b/src/servers/app/server/WinBorder.cpp @@ -222,6 +222,14 @@ void WinBorder::MouseDown(PortMessage *msg) STRACE_CLICK(("===> DEC_ZOOM\n")); break; } + case DEC_MINIMIZE: + { + fIsMinimizing = true; + fDecorator->SetMinimize(true); + fDecorator->DrawMinimize(); + STRACE_CLICK(("===> DEC_MINIMIZE\n")); + break; + } case DEC_RESIZE: { fIsResizing = true; @@ -342,6 +350,7 @@ void WinBorder::MouseUp(PortMessage *msg) fIsZooming = false; fDecorator->SetZoom(false); fDecorator->DrawZoom(); + Window()->Zoom(); return; } if (fIsClosing) @@ -349,6 +358,7 @@ void WinBorder::MouseUp(PortMessage *msg) fIsClosing = false; fDecorator->SetClose(false); fDecorator->DrawClose(); + Window()->Quit(); return; } if(fIsMinimizing) @@ -356,6 +366,7 @@ void WinBorder::MouseUp(PortMessage *msg) fIsMinimizing = false; fDecorator->SetMinimize(false); fDecorator->DrawMinimize(); + Window()->Minimize(true); return; } }