diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-06-06 18:25:12 +0200 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-06-06 18:25:12 +0200 |
| commit | a8e3872e5356bc800ae6f5c1a141afee46fbfeef (patch) | |
| tree | aca5d8a02159166d7c4076ad99c66f8c732ecc33 /hud | |
| parent | 39ac67df039e67afd8f76235155eeb9bd3a6c1fe (diff) | |
| parent | 2f34424e7ac62393d5cea702d6c55abbfd34a98b (diff) | |
Merged gsource into gsource-rewrite.
(bzr r2364.3.61)
Diffstat (limited to 'hud')
| -rw-r--r-- | hud/HudView.cpp | 42 | ||||
| -rw-r--r-- | hud/HudView.h | 1 | ||||
| -rw-r--r-- | hud/StandaloneHud.cpp | 1 |
3 files changed, 33 insertions, 11 deletions
diff --git a/hud/HudView.cpp b/hud/HudView.cpp index f6e0d9c15..dec3e4f7b 100644 --- a/hud/HudView.cpp +++ b/hud/HudView.cpp @@ -44,10 +44,10 @@ const int pause_before_grow_length = 32 * 1000; const int default_width = 960; const int default_height = 276; -const int content_width = 941; +const int content_width = 939; const int top_padding = 11; -const int bottom_padding = 9; +const int bottom_padding = 10; const int left_padding = 11; const int right_padding = 0; } @@ -209,6 +209,12 @@ nux::View* View::default_focus() const return search_bar_->text_entry(); } +std::list<HudButton::Ptr> const& View::buttons() const +{ + return buttons_; +} + + void View::SetQueries(Hud::Queries queries) { // early exit, if the user is key navigating on the hud, we don't want to set new @@ -227,14 +233,14 @@ void View::SetQueries(Hud::Queries queries) buttons_.clear(); button_views_->Clear(); int found_items = 0; - for (auto query = queries.begin(); query != queries.end(); query++) + for (auto query : queries) { if (found_items >= 5) break; HudButton::Ptr button(new HudButton()); buttons_.push_front(button); - button->SetQuery(*query); + button->SetQuery(query); button_views_->AddView(button.GetPointer(), 0, nux::MINOR_POSITION_LEFT); @@ -242,24 +248,26 @@ void View::SetQueries(Hud::Queries queries) query_activated.emit(dynamic_cast<HudButton*>(view)->GetQuery()); }); - button->key_nav_focus_activate.connect([&](nux::Area *area) { + button->key_nav_focus_activate.connect([&](nux::Area* area) { query_activated.emit(dynamic_cast<HudButton*>(area)->GetQuery()); }); - button->key_nav_focus_change.connect([&](nux::Area *area, bool recieving, KeyNavDirection direction){ + button->key_nav_focus_change.connect([&](nux::Area* area, bool recieving, KeyNavDirection direction){ if (recieving) query_selected.emit(dynamic_cast<HudButton*>(area)->GetQuery()); }); - // You should never decrement end(). We should fix this loop. - button->is_rounded = (query == --(queries.end())) ? true : false; - button->fake_focused = (query == (queries.begin())) ? true : false; - button->SetMinimumWidth(content_width); - found_items++; + ++found_items; } + if (found_items) + { + buttons_.front()->is_rounded = true; + buttons_.back()->fake_focused = true; selected_button_ = 1; + } + QueueRelayout(); QueueDraw(); @@ -439,9 +447,21 @@ void View::DrawContent(nux::GraphicsEngine& gfx_context, bool force_draw) renderer_.DrawInner(gfx_context, draw_content_geo, absolute_window_geometry_, window_geometry_); gfx_context.PushClippingRectangle(draw_content_geo); + if (IsFullRedraw()) { nux::GetPainter().PushBackgroundStack(); + + if (!buttons_.empty()) // See bug #1008603. + { + int height = 3; + int x = search_bar_->GetBaseX() + 1; + int y = search_bar_->GetBaseY() + search_bar_->GetBaseHeight() - height; + nux::GetPainter().Draw2DLine(gfx_context, x, y, x, y + height, nux::color::White * 0.13); + x += content_width - 1; + nux::GetPainter().Draw2DLine(gfx_context, x, y, x, y + height, nux::color::White * 0.13); + } + GetLayout()->ProcessDraw(gfx_context, force_draw); nux::GetPainter().PopBackgroundStack(); } diff --git a/hud/HudView.h b/hud/HudView.h index 1904e6f96..f60052a56 100644 --- a/hud/HudView.h +++ b/hud/HudView.h @@ -52,6 +52,7 @@ public: void Relayout(); nux::View* default_focus() const; + std::list<HudButton::Ptr> const& buttons() const; void SetQueries(Hud::Queries queries); void SetIcon(std::string icon_name, unsigned int tile_size, unsigned int size, unsigned int padding); diff --git a/hud/StandaloneHud.cpp b/hud/StandaloneHud.cpp index 80604be2a..74d9b7b3f 100644 --- a/hud/StandaloneHud.cpp +++ b/hud/StandaloneHud.cpp @@ -150,6 +150,7 @@ int main(int argc, char **argv) nux::logging::configure_logging(::getenv("UNITY_LOG_SEVERITY")); LOG_DEBUG(logger) << "starting the standalone hud"; // The instances for the pseudo-singletons. + unity::Settings settings; unity::dash::Style dash_style; TestRunner *test_runner = new TestRunner (); |
