diff --git a/apps/solver/equation_list_view.cpp b/apps/solver/equation_list_view.cpp index ee06b0f75..f46d29264 100644 --- a/apps/solver/equation_list_view.cpp +++ b/apps/solver/equation_list_view.cpp @@ -7,6 +7,7 @@ namespace Solver { EquationListView::EquationListView(Responder * parentResponder, TableViewDataSource * dataSource, SelectableTableViewDataSource * selectionDataSource) : Responder(parentResponder), View(), + m_displayBrace(false), m_listView(this, dataSource, selectionDataSource), m_braceView(), m_scrollBraceView(&m_braceView, this) @@ -20,6 +21,13 @@ EquationListView::EquationListView(Responder * parentResponder, TableViewDataSou m_scrollBraceView.setBackgroundColor(KDColorWhite); } +void EquationListView::displayBrace(bool displayBrace) { + if (m_displayBrace != displayBrace) { + m_displayBrace = displayBrace; + layoutSubviews(); + } +} + void EquationListView::scrollViewDidChangeOffset(ScrollViewDataSource * scrollViewDataSource) { m_scrollBraceView.setContentOffset(KDPoint(0, scrollViewDataSource->offset().y())); layoutSubviews(); @@ -39,33 +47,20 @@ void EquationListView::didBecomeFirstResponder() { } void EquationListView::layoutSubviews() { - KDCoordinate braceWidth = m_braceView.minimalSizeForOptimalDisplay().width(); - m_braceView.setSize(KDSize(braceWidth, m_listView.minimalSizeForOptimalDisplay().height()-Metric::StoreRowHeight-2*k_margin)); m_listView.setFrame(KDRect(0, 0, bounds().width(), bounds().height())); - m_scrollBraceView.setFrame(KDRect(0, 0, k_braceTotalWidth, m_listView.minimalSizeForOptimalDisplay().height()-Metric::StoreRowHeight-offset().y())); + if (m_displayBrace) { + KDCoordinate braceWidth = m_braceView.minimalSizeForOptimalDisplay().width(); + m_braceView.setSize(KDSize(braceWidth, m_listView.minimalSizeForOptimalDisplay().height()-Metric::StoreRowHeight-2*k_margin)); + m_scrollBraceView.setFrame(KDRect(0, 0, k_braceTotalWidth, m_listView.minimalSizeForOptimalDisplay().height()-Metric::StoreRowHeight-offset().y())); + } else { + m_scrollBraceView.setFrame(KDRectZero); + } } /* EquationListView::BraceWidth */ -EquationListView::BraceView::BraceView() : - View(), - m_displayBrace(false) -{ -} - -void EquationListView::BraceView::displayBrace(bool displayBrace) { - if (m_displayBrace != displayBrace) { - m_displayBrace = displayBrace; - markRectAsDirty(bounds()); - } -} - void EquationListView::BraceView::drawRect(KDContext * ctx, KDRect rect) const { - if (m_displayBrace) { - ctx->fillRect(bounds(), KDColorRed); - } else { - ctx->fillRect(bounds(), KDColorWhite); - } + ctx->fillRect(bounds(), KDColorRed); } KDSize EquationListView::BraceView::minimalSizeForOptimalDisplay() const { diff --git a/apps/solver/equation_list_view.h b/apps/solver/equation_list_view.h index e1380dfe2..d85330d8f 100644 --- a/apps/solver/equation_list_view.h +++ b/apps/solver/equation_list_view.h @@ -8,9 +8,7 @@ namespace Solver { class EquationListView : public Responder, public View, public ScrollViewDelegate, public ScrollViewDataSource { public: EquationListView(Responder * parentResponder, TableViewDataSource * dataSource, SelectableTableViewDataSource * selectionDataSource); - void displayBrace(bool displayBrace) { - m_braceView.displayBrace(displayBrace); - } + void displayBrace(bool displayBrace); void scrollViewDidChangeOffset(ScrollViewDataSource * scrollViewDataSource) override; void didBecomeFirstResponder() override; SelectableTableView * selectableTableView() { @@ -25,15 +23,11 @@ private: class BraceView : public View { public: - BraceView(); void drawRect(KDContext * ctx, KDRect rect) const override; KDSize minimalSizeForOptimalDisplay() const override; - void displayBrace(bool displayBrace); constexpr static KDCoordinate k_braceWidth = 10; - private: - bool m_displayBrace; }; - + bool m_displayBrace; SelectableTableView m_listView; BraceView m_braceView; ScrollView m_scrollBraceView;