From ef52eb17eaf4a736103f48e278d3dcc2af948b9e Mon Sep 17 00:00:00 2001 From: Karsten Heimrich Date: Tue, 30 Sep 2008 21:43:36 +0000 Subject: [PATCH] * make sure we close the app on ESCAPE * do not launch a second window in case of RefsReceived git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27799 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/screenshot/Screenshot.cpp | 8 ++++++-- src/apps/screenshot/Screenshot.h | 1 + src/apps/screenshot/ScreenshotWindow.cpp | 13 ++++++++----- src/apps/screenshot/ScreenshotWindow.h | 2 +- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/apps/screenshot/Screenshot.cpp b/src/apps/screenshot/Screenshot.cpp index b06b357dbd..687477c11e 100644 --- a/src/apps/screenshot/Screenshot.cpp +++ b/src/apps/screenshot/Screenshot.cpp @@ -14,7 +14,8 @@ Screenshot::Screenshot() : BApplication("application/x-vnd.haiku-screenshot"), - fArgvReceived(false) + fArgvReceived(false), + fRefsReceived(false) { } @@ -27,10 +28,11 @@ Screenshot::~Screenshot() void Screenshot::ReadyToRun() { - if(!fArgvReceived) + if(!fArgvReceived && !fRefsReceived) new ScreenshotWindow(); fArgvReceived = false; + fRefsReceived = false; } @@ -57,6 +59,8 @@ Screenshot::RefsReceived(BMessage* message) new ScreenshotWindow(delay * 1000000, includeBorder, includeCursor, grabActiveWindow, showConfigureWindow, saveScreenshotSilent); + + fRefsReceived = true; } diff --git a/src/apps/screenshot/Screenshot.h b/src/apps/screenshot/Screenshot.h index 7087c3f360..4c8c24fa99 100644 --- a/src/apps/screenshot/Screenshot.h +++ b/src/apps/screenshot/Screenshot.h @@ -19,4 +19,5 @@ private: private: bool fArgvReceived; + bool fRefsReceived; }; diff --git a/src/apps/screenshot/ScreenshotWindow.cpp b/src/apps/screenshot/ScreenshotWindow.cpp index d338d3c366..17ecd8b6e9 100644 --- a/src/apps/screenshot/ScreenshotWindow.cpp +++ b/src/apps/screenshot/ScreenshotWindow.cpp @@ -190,11 +190,14 @@ ScreenshotWindow::MessageReceived(BMessage* message) } } break; - case kFinishScreenshot: { + case kFinishScreenshot: _WriteSettings(); _SaveScreenshot(); + + // fall through + case B_QUIT_REQUESTED: be_app_messenger.SendMessage(B_QUIT_REQUESTED); - } break; + break; case kShowOptions: { BCardLayout* layout = dynamic_cast (GetLayout()); @@ -323,7 +326,7 @@ ScreenshotWindow::_SetupSecondLayoutItem(BCardLayout* layout) fPreviewBox->SetExplicitMinSize(BSize(200.0, B_SIZE_UNSET)); fPreviewBox->SetFlags(fPreviewBox->Flags() | B_FULL_UPDATE_ON_RESIZE); - fNameControl = new BTextControl("", "Name:", "screenshot", NULL); + fNameControl = new BTextControl("", "Name:", "screenshot1", NULL); BMessage settings(_ReadSettings()); @@ -333,7 +336,7 @@ ScreenshotWindow::_SetupSecondLayoutItem(BCardLayout* layout) _SetupOutputPathMenu(new BMenu("Please select"), settings); BMenuField* menuField2 = new BMenuField("Save in:", fOutputPathMenu); - fNameControl->SetText(_FindValidFileName("screenshot").String()); + fNameControl->SetText(_FindValidFileName("screenshot1").String()); BBox* divider = new BBox(B_FANCY_BORDER, NULL); divider->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, 1)); @@ -739,7 +742,7 @@ ScreenshotWindow::_SaveScreenshotSilent() const int32 index = 1; do { char filename[32]; - sprintf(filename, "screenshot%ld.png", index++); + sprintf(filename, "screenshot%ld", index++); path = homePath; path.Append(filename); entry.SetTo(path.Path()); diff --git a/src/apps/screenshot/ScreenshotWindow.h b/src/apps/screenshot/ScreenshotWindow.h index 4db01f94a2..2402a74a0a 100644 --- a/src/apps/screenshot/ScreenshotWindow.h +++ b/src/apps/screenshot/ScreenshotWindow.h @@ -28,7 +28,7 @@ public: bool saveScreenshotSilent = false); virtual ~ScreenshotWindow(); - virtual void MessageReceived(BMessage* message); + virtual void MessageReceived(BMessage* message); private: void _InitWindow();