Author: stippi Date: Wed Mar 24 22:30:20 2010 New Revision: 356 URL: http://mmlr.dyndns.org/changeset/356 Log: * Scroll the downloads which just started into view. * Delete the progress view when init fails. Modified: webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h Modified: webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp Wed Mar 24 20:27:26 2010 (r355) +++ webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp Wed Mar 24 22:30:20 2010 (r356) @@ -157,8 +157,7 @@ menu->AddItem(new BMenuItem("Hide", new BMessage(B_QUIT_REQUESTED), 'H')); menuBar->AddItem(menu); - BScrollView* scrollView = new DownloadContainerScrollView( - downloadsGroupView); + fDownloadsScrollView = new DownloadContainerScrollView(downloadsGroupView); fRemoveFinishedButton = new BButton("Remove finished", new BMessage(REMOVE_FINISHED_DOWNLOADS)); @@ -172,7 +171,7 @@ AddChild(BGroupLayoutBuilder(B_VERTICAL) .Add(menuBar) - .Add(scrollView) + .Add(fDownloadsScrollView) .Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER)) .Add(BGroupLayoutBuilder(B_HORIZONTAL, spacing) .AddGlue() @@ -280,6 +279,9 @@ } +// #pragma mark - private + + void DownloadWindow::_DownloadStarted(BWebDownload* download) { @@ -308,9 +310,26 @@ fRemoveFinishedButton->SetEnabled(finishedCount > 0); fRemoveMissingButton->SetEnabled(missingCount > 0); DownloadProgressView* view = new DownloadProgressView(download); - if (!view->Init()) + if (!view->Init()) { + delete view; return; + } fDownloadViewsLayout->AddView(index, view); + float viewHeight = view->MinSize().height + 1; + if (BScrollBar* scrollBar = fDownloadsScrollView->ScrollBar(B_VERTICAL)) { + float min; + float max; + scrollBar->GetRange(&min, &max); + float scrollOffset = min + index * viewHeight; + float scrollBarHeight = scrollBar->Bounds().Height() - 1; + float value = scrollBar->Value(); + if (scrollOffset < value) + scrollBar->SetValue(scrollOffset); + else if (scrollOffset + viewHeight > value + scrollBarHeight) { + float diff = scrollOffset + viewHeight - (value + scrollBarHeight); + scrollBar->SetValue(value + diff); + } + } _SaveSettings(); SetWorkspaces(B_CURRENT_WORKSPACE); Modified: webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h ============================================================================== --- webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h Wed Mar 24 20:27:26 2010 (r355) +++ webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h Wed Mar 24 22:30:20 2010 (r356) @@ -34,6 +34,7 @@ class BButton; class BFile; class BGroupLayout; +class BScrollView; class BWebDownload; class SettingsMessage; @@ -58,6 +59,7 @@ bool _OpenSettingsFile(BFile& file, uint32 mode); private: + BScrollView* fDownloadsScrollView; BGroupLayout* fDownloadViewsLayout; BButton* fRemoveFinishedButton; BButton* fRemoveMissingButton;