Fixed scrollbars & window resize knob layout issue:

- active view at fullscreen enter and exit was not necessary the same one!
- all view's scrollbars are now resized at fullscreen switch
- new tab's scrollbar was sized for window mode, even when added while in
  fullscreen mode...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39689 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Philippe Houdoin
2010-12-01 10:51:21 +00:00
parent b108306f59
commit b90b61272e
2 changed files with 14 additions and 12 deletions
+4 -6
View File
@@ -38,26 +38,24 @@ TermScrollView::TermScrollView(const char* name, BView* child, BView* target,
BScrollView(name, child, resizingMode, 0, false, true, B_NO_BORDER) BScrollView(name, child, resizingMode, 0, false, true, B_NO_BORDER)
{ {
child->TargetedByScrollView(NULL); child->TargetedByScrollView(NULL);
// replace the vertical scroll bar with our own // replace the vertical scroll bar with our own
if (fVerticalScrollBar != NULL) { if (fVerticalScrollBar != NULL) {
BRect frame(fVerticalScrollBar->Frame()); BRect frame(fVerticalScrollBar->Frame());
RemoveChild(fVerticalScrollBar); RemoveChild(fVerticalScrollBar);
delete fVerticalScrollBar; delete fVerticalScrollBar;
// Overlap one pixel at the top (if required) and the bottom of the // Overlap one pixel at the top (if required) with the menu for
// scroll bar with the menu respectively resize knob for aesthetical // aesthetical reasons.
// reasons.
if (overlapTop) if (overlapTop)
frame.top--; frame.top--;
frame.bottom -= B_H_SCROLL_BAR_HEIGHT - 1;
TermScrollBar* scrollBar = new TermScrollBar(frame, "_VSB_", target, 0, TermScrollBar* scrollBar = new TermScrollBar(frame, "_VSB_", target, 0,
1000, B_VERTICAL); 1000, B_VERTICAL);
AddChild(scrollBar); AddChild(scrollBar);
fVerticalScrollBar = scrollBar; fVerticalScrollBar = scrollBar;
} }
target->TargetedByScrollView(this); target->TargetedByScrollView(this);
} }
+10 -6
View File
@@ -775,7 +775,8 @@ TermWindow::MessageReceived(BMessage *message)
float mbHeight = fMenuBar->Bounds().Height() + 1; float mbHeight = fMenuBar->Bounds().Height() + 1;
fSavedFrame = Frame(); fSavedFrame = Frame();
BScreen screen(this); BScreen screen(this);
_ActiveTermView()->ScrollBar()->ResizeBy(0, (B_H_SCROLL_BAR_HEIGHT - 2)); for (int32 i = fTabView->CountTabs() - 1; i >=0 ; i--)
_TermViewAt(i)->ScrollBar()->ResizeBy(0, (B_H_SCROLL_BAR_HEIGHT - 1));
fMenuBar->Hide(); fMenuBar->Hide();
fTabView->ResizeBy(0, mbHeight); fTabView->ResizeBy(0, mbHeight);
@@ -790,7 +791,8 @@ TermWindow::MessageReceived(BMessage *message)
_ActiveTermView()->DisableResizeView(); _ActiveTermView()->DisableResizeView();
float mbHeight = fMenuBar->Bounds().Height() + 1; float mbHeight = fMenuBar->Bounds().Height() + 1;
fMenuBar->Show(); fMenuBar->Show();
_ActiveTermView()->ScrollBar()->ResizeBy(0, -(B_H_SCROLL_BAR_HEIGHT - 2)); for (int32 i = fTabView->CountTabs() - 1; i >=0 ; i--)
_TermViewAt(i)->ScrollBar()->ResizeBy(0, -(B_H_SCROLL_BAR_HEIGHT - 1));
ResizeTo(fSavedFrame.Width(), fSavedFrame.Height()); ResizeTo(fSavedFrame.Width(), fSavedFrame.Height());
MoveTo(fSavedFrame.left, fSavedFrame.top); MoveTo(fSavedFrame.left, fSavedFrame.top);
fTabView->ResizeBy(0, -mbHeight); fTabView->ResizeBy(0, -mbHeight);
@@ -1066,8 +1068,8 @@ void
TermWindow::_NewTab() TermWindow::_NewTab()
{ {
if (fTabView->CountTabs() < kMaxTabs) { if (fTabView->CountTabs() < kMaxTabs) {
if (fFullScreen) // if (fFullScreen)
_ActiveTermView()->ScrollBar()->Show(); // _ActiveTermView()->ScrollBar()->Show();
ActiveProcessInfo info; ActiveProcessInfo info;
if (_ActiveTermView()->GetActiveProcessInfo(info)) if (_ActiveTermView()->GetActiveProcessInfo(info))
@@ -1098,6 +1100,8 @@ TermWindow::_AddTab(Arguments* args, const BString& currentDirectory)
TermViewContainerView* containerView = new TermViewContainerView(view); TermViewContainerView* containerView = new TermViewContainerView(view);
BScrollView* scrollView = new TermScrollView("scrollView", BScrollView* scrollView = new TermScrollView("scrollView",
containerView, view, fSessions.IsEmpty()); containerView, view, fSessions.IsEmpty());
if (!fFullScreen)
scrollView->ScrollBar(B_VERTICAL)->ResizeBy(0, -(B_H_SCROLL_BAR_HEIGHT - 1));
if (fSessions.IsEmpty()) if (fSessions.IsEmpty())
fTabView->SetScrollView(scrollView); fTabView->SetScrollView(scrollView);
@@ -1179,8 +1183,8 @@ TermWindow::_RemoveTab(int32 index)
delete session; delete session;
delete fTabView->RemoveTab(index); delete fTabView->RemoveTab(index);
if (fFullScreen) // if (fFullScreen)
_ActiveTermView()->ScrollBar()->Hide(); // _ActiveTermView()->ScrollBar()->Hide();
} }
} else } else
PostMessage(B_QUIT_REQUESTED); PostMessage(B_QUIT_REQUESTED);