From f2dd6827eab132c283f565abe9d087b57df3a5a3 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Tue, 6 Dec 2016 09:28:48 -0800 Subject: [PATCH] Add Widget::parent_rect() accessor, rename member variable. Some day I will settle on a convention for naming members... I think that day is near. --- firmware/common/ui_widget.cpp | 14 +++++++++----- firmware/common/ui_widget.hpp | 7 ++++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/firmware/common/ui_widget.cpp b/firmware/common/ui_widget.cpp index 6255a0ab3..88d5cc165 100644 --- a/firmware/common/ui_widget.cpp +++ b/firmware/common/ui_widget.cpp @@ -53,15 +53,19 @@ Point Widget::screen_pos() { } Size Widget::size() const { - return parent_rect.size(); + return _parent_rect.size(); } Rect Widget::screen_rect() const { - return parent() ? (parent_rect + parent()->screen_pos()) : parent_rect; + return parent() ? (parent_rect() + parent()->screen_pos()) : parent_rect(); +} + +Rect Widget::parent_rect() const { + return _parent_rect; } void Widget::set_parent_rect(const Rect new_parent_rect) { - parent_rect = new_parent_rect; + _parent_rect = new_parent_rect; set_dirty(); } @@ -106,7 +110,7 @@ void Widget::hidden(bool hide) { if( hide ) { // TODO: Instead of dirtying parent entirely, dirty only children // that overlap with this widget. - parent()->dirty_overlapping_children_in_rect(parent_rect); + parent()->dirty_overlapping_children_in_rect(parent_rect()); /* TODO: Notify self and all non-hidden children that they're * now effectively hidden? */ @@ -214,7 +218,7 @@ void Widget::set_highlighted(const bool value) { void Widget::dirty_overlapping_children_in_rect(const Rect& child_rect) { for(auto child : children()) { - if( !child_rect.intersect(child->parent_rect).is_empty() ) { + if( !child_rect.intersect(child->parent_rect()).is_empty() ) { child->set_dirty(); } } diff --git a/firmware/common/ui_widget.hpp b/firmware/common/ui_widget.hpp index 68a8fdbab..6a081b6f5 100644 --- a/firmware/common/ui_widget.hpp +++ b/firmware/common/ui_widget.hpp @@ -52,13 +52,13 @@ private: class Widget { public: Widget( - ) : parent_rect { } + ) : _parent_rect { } { } Widget( Rect parent_rect - ) : parent_rect { parent_rect } + ) : _parent_rect { parent_rect } { } @@ -72,6 +72,7 @@ public: Point screen_pos(); Size size() const; Rect screen_rect() const; + Rect parent_rect() const; virtual void set_parent_rect(const Rect new_parent_rect); Widget* parent() const; @@ -119,7 +120,7 @@ protected: private: /* Widget rectangle relative to parent pos(). */ - Rect parent_rect; + Rect _parent_rect; const Style* style_ { nullptr }; Widget* parent_ { nullptr };