void Viewport::scrollBarMoved (ScrollBar* scrollBarThatHasMoved, const double newRangeStart) { if (scrollBarThatHasMoved == horizontalScrollBar) { setViewPosition (roundToInt (newRangeStart), getViewPositionY()); } else if (scrollBarThatHasMoved == verticalScrollBar) { setViewPosition (getViewPositionX(), roundToInt (newRangeStart)); } }
void Viewport::scrollBarMoved (ScrollBar* scrollBarThatHasMoved, double newRangeStart) { const int newRangeStartInt = roundToInt (newRangeStart); if (scrollBarThatHasMoved == &horizontalScrollBar) { setViewPosition (newRangeStartInt, getViewPositionY()); } else if (scrollBarThatHasMoved == &verticalScrollBar) { setViewPosition (getViewPositionX(), newRangeStartInt); } }
void ChannelViewport::paintOverChildren( Graphics& g ) { juce::Rectangle<int> shadow(getLocalBounds()); shadow.setHeight(jmin(10, getViewPositionY() - 2)); // clamps shadow pos if (shadow.getHeight() > 0) { shadow.setWidth(getMaximumVisibleWidth()); ColourGradient grad(Colours::black.withAlpha(0.6f), (float)shadow.getX(), (float)shadow.getY(), Colours::transparentBlack, (float)shadow.getX(), (float)shadow.getBottom(), false); g.setGradientFill(grad); g.fillRect(shadow); } }
void updateContents() { hasUpdated = true; const int rowHeight = owner.getRowHeight(); if (rowHeight > 0) { const int y = getViewPositionY(); const int w = getViewedComponent()->getWidth(); const int numNeeded = 2 + getMaximumVisibleHeight() / rowHeight; rows.removeRange (numNeeded, rows.size()); while (numNeeded > rows.size()) { ListBoxRowComponent* newRow = new ListBoxRowComponent (owner); rows.add (newRow); getViewedComponent()->addAndMakeVisible (newRow); } firstIndex = y / rowHeight; firstWholeIndex = (y + rowHeight - 1) / rowHeight; lastWholeIndex = (y + getMaximumVisibleHeight() - 1) / rowHeight; for (int i = 0; i < numNeeded; ++i) { const int row = i + firstIndex; ListBoxRowComponent* const rowComp = getComponentForRow (row); if (rowComp != nullptr) { rowComp->setBounds (0, row * rowHeight, w, rowHeight); rowComp->update (row, owner.isRowSelected (row)); } } } if (owner.headerComponent != nullptr) owner.headerComponent->setBounds (owner.outlineThickness + getViewedComponent()->getX(), owner.outlineThickness, jmax (owner.getWidth() - owner.outlineThickness * 2, getViewedComponent()->getWidth()), owner.headerComponent->getHeight()); }