Skip to content

Commit 9570972

Browse files
committed
Update track zooming to minimize redrawing updates
2 parents 3e6f64c + a36e2ca commit 9570972

2 files changed

Lines changed: 20 additions & 11 deletions

File tree

Source/Plugins/LfpDisplayNodeAlpha/LfpDisplayCanvas.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,7 @@ void LfpDisplayOptions::setRangeSelection(float range, bool canvasMustUpdate)
13341334

13351335
}
13361336

1337-
void LfpDisplayOptions::setSpreadSelection(int spread, bool canvasMustUpdate)
1337+
void LfpDisplayOptions::setSpreadSelection(int spread, bool canvasMustUpdate, bool deferDisplayRefresh)
13381338
{
13391339

13401340
if (canvasMustUpdate)
@@ -1347,8 +1347,11 @@ void LfpDisplayOptions::setSpreadSelection(int spread, bool canvasMustUpdate)
13471347
selectedSpread = spreadSelection->getSelectedId();
13481348
selectedSpreadValue = spreadSelection->getText();
13491349

1350-
canvas->repaint();
1351-
canvas->refresh();
1350+
if (!deferDisplayRefresh)
1351+
{
1352+
canvas->repaint();
1353+
canvas->refresh();
1354+
}
13521355
}
13531356
}
13541357

@@ -3592,6 +3595,7 @@ void LfpChannelDisplayInfo::mouseDrag(const MouseEvent &e)
35923595
{
35933596
if (e.mods.isCommandDown() && !display->getSingleChannelState()) // CTRL + drag -> change channel spacing
35943597
{
3598+
35953599
// init state in our track zooming info struct
35963600
if (!display->trackZoomInfo.isScrollingY)
35973601
{
@@ -3634,19 +3638,24 @@ void LfpChannelDisplayInfo::mouseDrag(const MouseEvent &e)
36343638
}
36353639

36363640
// set channel heights for all channel
3637-
display->setChannelHeight(newHeight);
3638-
display->setBounds(0,0,display->getWidth()-0, display->getChannelHeight()*display->drawableChannels.size()); // update height so that the scrollbar is correct
3641+
// display->setChannelHeight(newHeight);
3642+
for (int i = 0; i < display->getNumChannels(); ++i)
3643+
{
3644+
display->channels[i]->setChannelHeight(newHeight);
3645+
display->channelInfo[i]->setChannelHeight(newHeight);
3646+
}
3647+
3648+
options->setSpreadSelection(newHeight, false, true); // update combobox
36393649

3640-
canvas->viewport->setViewPositionProportionately(display->trackZoomInfo.zoomPivotRatioX, display->trackZoomInfo.zoomPivotRatioY);
3650+
canvas->fullredraw = true;//issue full redraw - scrolling without modifier doesnt require a full redraw
3651+
3652+
display->setBounds(0,0,display->getWidth()-0, display->getChannelHeight()*display->drawableChannels.size()); // update height so that the scrollbar is correct
36413653

36423654
int newViewportY = display->trackZoomInfo.zoomPivotRatioY * display->getHeight() - display->trackZoomInfo.zoomPivotViewportOffset.getY();
36433655
if (newViewportY < 0) newViewportY = 0; // make sure we don't adjust beyond the edge of the actual view
36443656

3645-
canvas->viewport->setViewPosition(display->trackZoomInfo.zoomPivotRatioX, newViewportY);
3646-
3647-
options->setSpreadSelection(newHeight); // update combobox
3657+
canvas->viewport->setViewPosition(0, newViewportY);
36483658

3649-
canvas->fullredraw = true;//issue full redraw - scrolling without modifier doesnt require a full redraw
36503659
}
36513660
}
36523661
}

Source/Plugins/LfpDisplayNodeAlpha/LfpDisplayCanvas.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ class LfpDisplayOptions : public Component,
251251
void resized();
252252

253253
void setRangeSelection(float range, bool canvasMustUpdate = false); // set range selection combo box to correct value if it has been changed by scolling etc.
254-
void setSpreadSelection(int spread, bool canvasMustUpdate = false); // set spread selection combo box to correct value if it has been changed by scolling etc.
254+
void setSpreadSelection(int spread, bool canvasMustUpdate = false, bool deferDisplayRefresh = false); // set spread selection combo box to correct value if it has been changed by scolling etc.
255255

256256
void comboBoxChanged(ComboBox* cb);
257257
void buttonClicked(Button* button);

0 commit comments

Comments
 (0)