diff options
| author | Marco Trevisan (TreviƱo) <mail@3v1n0.net> | 2017-04-07 18:31:14 +0000 | 
|---|---|---|
| committer | Bileto Bot <ci-train-bot@canonical.com> | 2017-04-07 18:31:14 +0000 | 
| commit | d73c921c8a88eed855745a14b1fb2ba2d7902920 (patch) | |
| tree | 4ee3927a576e23c12ff5485ce50e8cd3ffe52a57 | |
| parent | 7a43ed4dae7aa26df2e555e7c706b99efeecf153 (diff) | |
| parent | 34e1ea9dd6ecc0292f7bb7a695972bf075ebc52f (diff) | |
Dash: fix the neko regression we have since a couple of cycles (LP: #1680927)
(bzr r4227)
| -rw-r--r-- | dash/DashView.cpp | 24 | ||||
| -rw-r--r-- | dash/DashView.h | 1 | ||||
| -rw-r--r-- | dash/ResultRendererTile.cpp | 19 | ||||
| -rw-r--r-- | dash/ResultRendererTile.h | 4 | ||||
| -rwxr-xr-x | dash/ScopeView.cpp | 5 | ||||
| -rw-r--r-- | dash/ScopeView.h | 1 | 
6 files changed, 49 insertions, 5 deletions
| diff --git a/dash/DashView.cpp b/dash/DashView.cpp index 922936c36..de8f834c5 100644 --- a/dash/DashView.cpp +++ b/dash/DashView.cpp @@ -122,6 +122,7 @@ DashView::DashView(Scopes::Ptr const& scopes, ApplicationStarter::Ptr const& app  , last_activated_timestamp_(0)  , activate_on_finish_(false)  , visible_(false) + , neko_mode_(false)  , opening_column_x_(-1)  , opening_row_y_(-1)  , opening_column_width_(0) @@ -138,6 +139,10 @@ DashView::DashView(Scopes::Ptr const& scopes, ApplicationStarter::Ptr const& app  QueueDraw();  }); + gsize tmp_sz; + glib::String neko((gchar*)g_base64_decode("VU5JVFlfTkVLTw==", &tmp_sz)); + neko_mode_ = g_getenv(neko) != nullptr; +  SetupViews();  SetupUBusConnections();  AddChild(overlay_window_buttons_.GetPointer()); @@ -1290,6 +1295,7 @@ void DashView::OnScopeAdded(Scope::Ptr const& scope, int position)  nux::ObjectPtr<ScopeView> view(new ScopeView(scope, search_bar_->show_filters()));  AddChild(view.GetPointer());  view->scale = scale(); + view->neko_mode = neko_mode_;  view->SetVisible(false);  view->result_activated.connect(sigc::mem_fun(this, &DashView::OnResultActivated)); @@ -1427,6 +1433,24 @@ void DashView::OnEntryActivated()  {  if (active_scope_view_.IsValid())  { + const std::array<const gchar*, 2> nekos = { + "d2VsY29tZSBiYWNrIHVuaXR5=", + "ZmFyZXdlbGwgdW5pdHk=", + }; + + for (unsigned i = 0; i < nekos.size(); ++i) + { + gsize tmp_sz; + glib::String neko((gchar*)g_base64_decode(nekos[i], &tmp_sz)); + if (search_bar_->search_string() == neko.Str()) + { + for (auto const& view : scope_views_) + view.second->neko_mode = (i != 0); + + return; + } + } +  if (!activate_delay_ && !search_bar_->in_live_search())  active_scope_view_->ActivateFirst();  else diff --git a/dash/DashView.h b/dash/DashView.h index 95f485157..8e34be489 100644 --- a/dash/DashView.h +++ b/dash/DashView.h @@ -175,6 +175,7 @@ private:  bool activate_on_finish_;  glib::Source::UniquePtr activate_delay_;  bool visible_; + bool neko_mode_;  nux::ObjectPtr<nux::IOpenGLBaseTexture> dash_view_copy_;  nux::ObjectPtr<nux::IOpenGLBaseTexture> search_view_copy_; diff --git a/dash/ResultRendererTile.cpp b/dash/ResultRendererTile.cpp index 602c85057..35a438c9e 100644 --- a/dash/ResultRendererTile.cpp +++ b/dash/ResultRendererTile.cpp @@ -90,8 +90,9 @@ namespace dash  NUX_IMPLEMENT_OBJECT_TYPE(ResultRendererTile); -ResultRendererTile::ResultRendererTile(NUX_FILE_LINE_DECL) +ResultRendererTile::ResultRendererTile(NUX_FILE_LINE_DECL, bool neko_mode)  : ResultRenderer(NUX_FILE_LINE_PARAM) + , neko_mode_(neko_mode)  {  UpdateWidthHeight();  scale.changed.connect([this] (double) { UpdateWidthHeight(); }); @@ -271,9 +272,21 @@ void ResultRendererTile::LoadIcon(Result const& row)  int tile_gsize = style.GetTileGIconSize().CP(scale);  std::string const& icon_hint = row.icon_hint; - std::string const& icon_name = !icon_hint.empty() ? icon_hint : DEFAULT_GICON; + std::string icon_name = !icon_hint.empty() ? icon_hint : DEFAULT_GICON; - glib::Object<GIcon> icon(g_icon_new_for_string(icon_name.c_str(), NULL)); + if (neko_mode_) + { + const std::array<const gchar*, 2> pool = { + "aHR0cDovL3BsYWNla2l0dGVuLmNvbS9nLyVpLyVpLw==", + "aHR0cDovL3BsYWNla2l0dGVuLmNvbS8laS8laS8=", + }; + gsize tmp0; + int tmp1 = tile_size - (rand() % RawPixel(16).CP(scale)); + glib::String tmp2((gchar*)g_base64_decode(pool[rand() % pool.size()], &tmp0)); + icon_name = glib::String(g_strdup_printf(tmp2, tmp1, tmp1)).Str(); + } + + glib::Object<GIcon> icon(g_icon_new_for_string(icon_name.c_str(), nullptr));  TextureContainer* container = row.renderer<TextureContainer*>();  if (container) diff --git a/dash/ResultRendererTile.h b/dash/ResultRendererTile.h index e54517b4e..174336005 100644 --- a/dash/ResultRendererTile.h +++ b/dash/ResultRendererTile.h @@ -59,7 +59,7 @@ class ResultRendererTile : public ResultRenderer  public:  NUX_DECLARE_OBJECT_TYPE(ResultRendererTile, ResultRenderer); - ResultRendererTile(NUX_FILE_LINE_PROTO); + ResultRendererTile(NUX_FILE_LINE_PROTO, bool neko_mode = false);  virtual ~ResultRendererTile() {}  virtual void Render(nux::GraphicsEngine& GfxContext, @@ -95,6 +95,8 @@ private:  int width, int height);  void UpdateWidthHeight(); + + bool neko_mode_;  };  } diff --git a/dash/ScopeView.cpp b/dash/ScopeView.cpp index 1f4fb2c00..b2d62e927 100755 --- a/dash/ScopeView.cpp +++ b/dash/ScopeView.cpp @@ -143,6 +143,7 @@ ScopeView::ScopeView(Scope::Ptr const& scope, nux::Area* show_filters)  , filters_expanded(false)  , can_refine_search(false)  , scale(DEFAULT_SCALE) +, neko_mode(false)  , scope_(scope)  , no_results_active_(false)  , last_good_filter_model_(-1) @@ -172,6 +173,8 @@ ScopeView::ScopeView(Scope::Ptr const& scope, nux::Area* show_filters)  conn_manager_.Add(scope_->filters.changed.connect(sigc::mem_fun(this, &ScopeView::SetupFilters)));  SetupFilters(scope->filters); + neko_mode.changed.connect([this] (bool) { SetupCategories(scope_->categories); }); +  scope_->connected.changed.connect([this](bool is_connected)  {  // We need to search again if we were reconnected after being connected before. @@ -485,7 +488,7 @@ void ScopeView::OnCategoryAdded(Category const& category)  }  else  { - results_view->SetModelRenderer(new ResultRendererTile(NUX_TRACKER_LOCATION)); + results_view->SetModelRenderer(new ResultRendererTile(NUX_TRACKER_LOCATION, neko_mode()));  }  if (scope_) diff --git a/dash/ScopeView.h b/dash/ScopeView.h index 4588e5b15..8f8cbf242 100644 --- a/dash/ScopeView.h +++ b/dash/ScopeView.h @@ -72,6 +72,7 @@ public:  nux::Property<ScopeViewType> view_type;  nux::Property<bool> can_refine_search;  nux::Property<double> scale; + nux::Property<bool> neko_mode;  sigc::signal<void, ResultView::ActivateType, LocalResult const&, GVariant*, std::string const&> result_activated; | 
