From 7746846941ab2a2fdc5492daabd785032c7f8a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 1 Oct 2007 10:21:12 +0000 Subject: [PATCH] * The ProgressWindow now starts centered over the reference window on every open. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22393 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/sudoku/ProgressWindow.cpp | 26 ++++++++++++++++---------- src/apps/sudoku/ProgressWindow.h | 4 +++- src/apps/sudoku/SudokuWindow.cpp | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/apps/sudoku/ProgressWindow.cpp b/src/apps/sudoku/ProgressWindow.cpp index 88697c5694..bb2c151621 100644 --- a/src/apps/sudoku/ProgressWindow.cpp +++ b/src/apps/sudoku/ProgressWindow.cpp @@ -51,15 +51,7 @@ ProgressWindow::ProgressWindow(BWindow* referenceWindow, } ResizeTo(Bounds().Width(), height + 8); - BRect frame; - if (referenceWindow != NULL) - frame = referenceWindow->Frame(); - else - frame = BScreen().Frame(); - - MoveTo(frame.left + (frame.Width() - Bounds().Width()) / 2, - frame.top + (frame.Height() - Bounds().Height()) / 2); - + _Center(referenceWindow); Run(); } @@ -71,9 +63,23 @@ ProgressWindow::~ProgressWindow() void -ProgressWindow::Start() +ProgressWindow::_Center(BWindow* referenceWindow) +{ + BRect frame; + if (referenceWindow != NULL) + frame = referenceWindow->Frame(); + else + frame = BScreen().Frame(); + + MoveTo(frame.left + (frame.Width() - Bounds().Width()) / 2, + frame.top + (frame.Height() - Bounds().Height()) / 2); +} + +void +ProgressWindow::Start(BWindow* referenceWindow) { BAutolock _(this); + _Center(referenceWindow); fRetrievedUpdate = false; fRetrievedShow = false; diff --git a/src/apps/sudoku/ProgressWindow.h b/src/apps/sudoku/ProgressWindow.h index 5b4dcb909e..46784a2110 100644 --- a/src/apps/sudoku/ProgressWindow.h +++ b/src/apps/sudoku/ProgressWindow.h @@ -19,10 +19,12 @@ class ProgressWindow : public BWindow { virtual void MessageReceived(BMessage *message); - void Start(); + void Start(BWindow* referenceWindow); void Stop(); private: + void _Center(BWindow* referenceWindow); + BStatusBar* fStatusBar; BMessageRunner* fRunner; bool fRetrievedUpdate; diff --git a/src/apps/sudoku/SudokuWindow.cpp b/src/apps/sudoku/SudokuWindow.cpp index e3d8721b66..4bcadfa26e 100644 --- a/src/apps/sudoku/SudokuWindow.cpp +++ b/src/apps/sudoku/SudokuWindow.cpp @@ -343,7 +343,7 @@ SudokuWindow::_Generate(int32 level) delete fGenerator; fSudokuView->SetEditable(false); - fProgressWindow->Start(); + fProgressWindow->Start(this); fGenerator = new GenerateSudoku(*fSudokuView->Field(), level, fProgressWindow, this); }