HaikuDepot: Implement a BScrollView which works.

Need to investigate why the original one wouldn't layout the
TextDocumentView to the inner size...
This commit is contained in:
Stephan Aßmus 2014-01-17 23:23:30 +01:00
parent 3828ba8a3f
commit 02d77b77aa
1 changed files with 55 additions and 2 deletions

View File

@ -26,6 +26,59 @@ enum {
MSG_SEND = 'send' MSG_SEND = 'send'
}; };
//! Layouts the scrollbar so it looks nice with no border and the document
// window look.
class ScrollView : public BScrollView {
public:
ScrollView(const char* name, BView* target)
:
BScrollView(name, target, 0, false, true, B_FANCY_BORDER)
{
}
virtual void DoLayout()
{
BRect innerFrame = Bounds();
innerFrame.InsetBy(2, 2);
BScrollBar* vScrollBar = ScrollBar(B_VERTICAL);
BScrollBar* hScrollBar = ScrollBar(B_HORIZONTAL);
if (vScrollBar != NULL)
innerFrame.right -= vScrollBar->Bounds().Width() - 1;
if (hScrollBar != NULL)
innerFrame.bottom -= hScrollBar->Bounds().Height() - 1;
BView* target = Target();
if (target != NULL) {
Target()->MoveTo(innerFrame.left, innerFrame.top);
Target()->ResizeTo(innerFrame.Width(), innerFrame.Height());
}
if (vScrollBar != NULL) {
BRect rect = innerFrame;
rect.left = rect.right + 1;
rect.right = rect.left + vScrollBar->Bounds().Width();
rect.top -= 1;
rect.bottom += 1;
vScrollBar->MoveTo(rect.left, rect.top);
vScrollBar->ResizeTo(rect.Width(), rect.Height());
}
if (hScrollBar != NULL) {
BRect rect = innerFrame;
rect.top = rect.bottom + 1;
rect.bottom = rect.top + hScrollBar->Bounds().Height();
rect.left -= 1;
rect.right += 1;
hScrollBar->MoveTo(rect.left, rect.top);
hScrollBar->ResizeTo(rect.Width(), rect.Height());
}
}
};
RatePackageWindow::RatePackageWindow(BWindow* parent, BRect frame) RatePackageWindow::RatePackageWindow(BWindow* parent, BRect frame)
: :
@ -38,8 +91,8 @@ RatePackageWindow::RatePackageWindow(BWindow* parent, BRect frame)
CenterIn(parent->Frame()); CenterIn(parent->Frame());
TextDocumentView* textView = new TextDocumentView(); TextDocumentView* textView = new TextDocumentView();
BScrollView* textScrollView = new BScrollView("rating scroll view", ScrollView* textScrollView = new ScrollView(
textView); "rating scroll view", textView);
MarkupParser parser; MarkupParser parser;
fRatingText = parser.CreateDocumentFromMarkup( fRatingText = parser.CreateDocumentFromMarkup(