summaryrefslogtreecommitdiff
path: root/hud
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2012-06-06 18:25:12 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2012-06-06 18:25:12 +0200
commita8e3872e5356bc800ae6f5c1a141afee46fbfeef (patch)
treeaca5d8a02159166d7c4076ad99c66f8c732ecc33 /hud
parent39ac67df039e67afd8f76235155eeb9bd3a6c1fe (diff)
parent2f34424e7ac62393d5cea702d6c55abbfd34a98b (diff)
Merged gsource into gsource-rewrite.
(bzr r2364.3.61)
Diffstat (limited to 'hud')
-rw-r--r--hud/HudView.cpp42
-rw-r--r--hud/HudView.h1
-rw-r--r--hud/StandaloneHud.cpp1
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 ();