Author: stippi Date: 2010-04-13 13:25:15 +0200 (Tue, 13 Apr 2010) New Revision: 36208 Changeset: http://dev.haiku-os.org/changeset/36208/haiku Ticket: http://dev.haiku-os.org/ticket/5626 Modified: haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp haiku/trunk/src/apps/screenshot/ScreenshotWindow.h Log: Patch by Shisui: Automatic filename basename selection and "Save" as default button for Screenshot. Fixes #5626. Thanks a lot! Modified: haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp =================================================================== --- haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp 2010-04-13 10:01:22 UTC (rev 36207) +++ haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp 2010-04-13 11:25:15 UTC (rev 36208) @@ -159,6 +159,9 @@ BCardLayout* layout = dynamic_cast<BCardLayout*> (GetLayout()); if (layout) layout->SetVisibleItem(1L); + + fSaveScreenshot->MakeDefault(true); + SetTitle(TR("Save screenshot")); break; } @@ -168,12 +171,14 @@ _TakeScreenshot(); _UpdatePreviewPanel(); Show(); + _UpdateFilenameSelection(); break; case kImageOutputFormat: message->FindInt32("be:type", &fImageFileType); message->FindInt32("be:translator", &fTranslator); fNameControl->SetText(_FindValidFileName(fNameControl->Text()).String()); + _UpdateFilenameSelection(); break; case kLocationChanged: @@ -183,6 +188,7 @@ fLastSelectedPath = static_cast<BMenuItem*> (source); fNameControl->SetText(_FindValidFileName(fNameControl->Text()).String()); + _UpdateFilenameSelection(); break; } @@ -235,6 +241,7 @@ if (layout) layout->SetVisibleItem(0L); + SetDefaultButton(NULL); SetTitle(TR("Take Screenshot")); fBackToSave->SetEnabled(true); @@ -280,8 +287,11 @@ _TakeScreenshot(); _UpdatePreviewPanel(); layout->SetVisibleItem(1L); - } else + fSaveScreenshot->MakeDefault(true); + } else { layout->SetVisibleItem(0L); + SetDefaultButton(NULL); + } } @@ -392,6 +402,9 @@ BBox* divider = new BBox(B_FANCY_BORDER, NULL); divider->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, 1)); + fSaveScreenshot = new BButton("", + TR("Save"), new BMessage(kFinishScreenshot)); + BGridLayout* gridLayout = BGridLayoutBuilder(0.0, 5.0) .Add(fNameControl->CreateLabelLayoutItem(), 0, 0) .Add(fNameControl->CreateTextViewLayoutItem(), 1, 0) @@ -416,7 +429,7 @@ .Add(new BButton("", TR("Options"), new BMessage(kShowOptions))) .AddGlue() .Add(new BButton("", TR("Cancel"), new BMessage(B_QUIT_REQUESTED))) - .Add(new BButton("", TR("Save"), new BMessage(kFinishScreenshot))) + .Add(fSaveScreenshot) .End() .SetInsets(10.0, 10.0, 10.0, 10.0) ); @@ -561,10 +574,23 @@ if (layout) layout->SetVisibleItem(1L); + _UpdateFilenameSelection(); + SetTitle(TR("Save screenshot")); } +void +ScreenshotWindow::_UpdateFilenameSelection() +{ + fNameControl->MakeFocus(true); + fNameControl->TextView()->Select(0, + fNameControl->TextView()->TextLength() - + fExtension.Length()); + fNameControl->TextView()->ScrollToSelection(); +} + + BString ScreenshotWindow::_FindValidFileName(const char* name) { Modified: haiku/trunk/src/apps/screenshot/ScreenshotWindow.h =================================================================== --- haiku/trunk/src/apps/screenshot/ScreenshotWindow.h 2010-04-13 10:01:22 UTC (rev 36207) +++ haiku/trunk/src/apps/screenshot/ScreenshotWindow.h 2010-04-13 11:25:15 UTC (rev 36208) @@ -56,6 +56,7 @@ BString& label, int32 index, bool markItem); void _UpdatePreviewPanel(); + void _UpdateFilenameSelection(); BString _FindValidFileName(const char* name); int32 _PathIndexInMenu(const BString& path) const; @@ -76,6 +77,7 @@ BCheckBox* fShowMouse; BButton* fBackToSave; BButton* fTakeScreenshot; + BButton* fSaveScreenshot; BTextControl* fNameControl; BMenu* fTranslatorMenu; BMenu* fOutputPathMenu;