asd
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#include "QPainter"
|
||||
#include "scrollbar.h"
|
||||
#include "colorscheme.h"
|
||||
|
||||
ScrollBar::ScrollBar(QWidget* widget)
|
||||
: QWidget(widget),
|
||||
mutex()
|
||||
{
|
||||
resize(16, 100);
|
||||
}
|
||||
|
||||
ScrollBar::~ScrollBar()
|
||||
{
|
||||
auto highlight = highlights;
|
||||
|
||||
while (highlight != NULL)
|
||||
{
|
||||
auto tmp = highlight->next;
|
||||
delete highlight;
|
||||
highlight = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
void ScrollBar::removeHighlightsWhere(std::function<bool (ScrollBarHighlight&)> func)
|
||||
{
|
||||
mutex.lock();
|
||||
|
||||
ScrollBarHighlight* last = NULL;
|
||||
ScrollBarHighlight* current = highlights;
|
||||
|
||||
while (current != NULL)
|
||||
{
|
||||
if (func(*current))
|
||||
{
|
||||
if (last == NULL)
|
||||
{
|
||||
highlights = current->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
last->next = current->next;
|
||||
}
|
||||
|
||||
auto oldCurrent = current;
|
||||
|
||||
current = current->next;
|
||||
last = current;
|
||||
|
||||
delete oldCurrent;
|
||||
}
|
||||
}
|
||||
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
void ScrollBar::addHighlight(ScrollBarHighlight* highlight)
|
||||
{
|
||||
mutex.lock();
|
||||
|
||||
if (highlights == NULL)
|
||||
{
|
||||
highlights = highlight;
|
||||
}
|
||||
else
|
||||
{
|
||||
highlight->next = highlights->next;
|
||||
highlights->next = highlight;
|
||||
}
|
||||
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
void ScrollBar::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
painter.fillRect(rect(), ColorScheme::getInstance().ScrollbarBG);
|
||||
|
||||
mutex.lock();
|
||||
|
||||
|
||||
|
||||
mutex.unlock();
|
||||
}
|
||||
Reference in New Issue
Block a user