diff --git a/src/servers/app/ServerPicture.cpp b/src/servers/app/ServerPicture.cpp index e4b076d164..8a04948909 100644 --- a/src/servers/app/ServerPicture.cpp +++ b/src/servers/app/ServerPicture.cpp @@ -477,6 +477,7 @@ set_clipping_rects(View *view, const BRect *rects, uint32 numRects) for (uint32 c = 0; c < numRects; c++) region.Include(rects[c]); view->SetUserClipping(®ion); + view->Window()->ServerWindow()->UpdateCurrentDrawingRegion(); } diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index b71168b160..02fc4cca6b 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -1169,7 +1169,7 @@ ServerWindow::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link) link.Read(&enable); status_t status = B_OK; - if (!fWindow->IsOffscreenWindow()) { + if (fDirectWindowData != NULL) { //fDesktop->UnlockSingleWindow(); _DirectWindowSetFullScreen(enable); //fDesktop->LockSingleWindow(); @@ -3719,6 +3719,8 @@ void ServerWindow::_DirectWindowSetFullScreen(bool enable) { if (enable) { + fDesktop->HWInterface()->SetCursorVisible(false); + fDirectWindowData->old_window_frame = fWindow->Frame(); BRect screenFrame = fDesktop->ActiveScreen()->Frame(); @@ -3737,7 +3739,9 @@ ServerWindow::_DirectWindowSetFullScreen(bool enable) oldFrame.top - fWindow->Frame().top); fDesktop->ResizeWindowBy(fWindow, oldFrame.Width() - fWindow->Frame().Width(), - oldFrame.Height() - fWindow->Frame().Height()); + oldFrame.Height() - fWindow->Frame().Height()); + + fDesktop->HWInterface()->SetCursorVisible(true); } fDesktop->SetWindowFeel(fWindow, diff --git a/src/servers/app/ServerWindow.h b/src/servers/app/ServerWindow.h index f26a4e1553..59c9c69a32 100644 --- a/src/servers/app/ServerWindow.h +++ b/src/servers/app/ServerWindow.h @@ -104,6 +104,9 @@ public: void ResyncDrawState(); + // TODO: Change this + inline void UpdateCurrentDrawingRegion() { _UpdateCurrentDrawingRegion(); }; + private: View* _CreateView(BPrivate::LinkReceiver &link, View **_parent); @@ -127,8 +130,9 @@ private: void _SetCurrentView(View* view); void _UpdateDrawState(View* view); +public: void _UpdateCurrentDrawingRegion(); - +private: bool _MessageNeedsAllWindowsLocked(uint32 code) const; void _DirectWindowSetFullScreen(bool set);