[Xfce4-commits] [panel-plugins/xfce4-whiskermenu-plugin] 03/10: Add interface for LauncherView.
noreply at xfce.org
noreply at xfce.org
Tue Dec 31 11:39:52 CET 2019
This is an automated email from the git hooks/post-receive script.
g o t t c o d e p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository panel-plugins/xfce4-whiskermenu-plugin.
commit 7369ad8d1f6f55657f98f5f56df6cafc4aeda8bb
Author: Graeme Gott <graeme at gottcode.org>
Date: Wed Dec 18 11:53:14 2019 -0500
Add interface for LauncherView.
---
panel-plugin/CMakeLists.txt | 2 +-
panel-plugin/favorites-page.cpp | 9 ++-
panel-plugin/favorites-page.h | 3 +-
.../{launcher-view.cpp => launcher-tree-view.cpp} | 85 ++++++++++++----------
.../{launcher-view.h => launcher-tree-view.h} | 30 ++------
panel-plugin/launcher-view.h | 64 +++++++---------
panel-plugin/page.cpp | 39 +++++-----
panel-plugin/page.h | 14 +++-
panel-plugin/search-page.cpp | 11 ++-
panel-plugin/search-page.h | 3 +-
10 files changed, 137 insertions(+), 123 deletions(-)
diff --git a/panel-plugin/CMakeLists.txt b/panel-plugin/CMakeLists.txt
index d0825bd..cce0447 100644
--- a/panel-plugin/CMakeLists.txt
+++ b/panel-plugin/CMakeLists.txt
@@ -78,7 +78,7 @@ add_library(whiskermenu MODULE
favorites-page.cpp
icon-size.cpp
launcher.cpp
- launcher-view.cpp
+ launcher-tree-view.cpp
page.cpp
plugin.cpp
profile-picture.cpp
diff --git a/panel-plugin/favorites-page.cpp b/panel-plugin/favorites-page.cpp
index 89d57b8..8512e24 100644
--- a/panel-plugin/favorites-page.cpp
+++ b/panel-plugin/favorites-page.cpp
@@ -35,7 +35,7 @@ using namespace WhiskerMenu;
FavoritesPage::FavoritesPage(Window* window) :
Page(window)
{
- set_reorderable(true);
+ view_created();
}
//-----------------------------------------------------------------------------
@@ -275,3 +275,10 @@ void FavoritesPage::sort_descending()
}
//-----------------------------------------------------------------------------
+
+void FavoritesPage::view_created()
+{
+ set_reorderable(true);
+}
+
+//-----------------------------------------------------------------------------
diff --git a/panel-plugin/favorites-page.h b/panel-plugin/favorites-page.h
index e8be1f6..16f19b2 100644
--- a/panel-plugin/favorites-page.h
+++ b/panel-plugin/favorites-page.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Graeme Gott <graeme at gottcode.org>
+ * Copyright (C) 2013, 2019 Graeme Gott <graeme at gottcode.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -47,6 +47,7 @@ private:
void sort(std::vector<Launcher*>& items) const;
void sort_ascending();
void sort_descending();
+ void view_created();
};
}
diff --git a/panel-plugin/launcher-view.cpp b/panel-plugin/launcher-tree-view.cpp
similarity index 76%
rename from panel-plugin/launcher-view.cpp
rename to panel-plugin/launcher-tree-view.cpp
index 42a0bf1..347302f 100644
--- a/panel-plugin/launcher-view.cpp
+++ b/panel-plugin/launcher-tree-view.cpp
@@ -15,7 +15,7 @@
* along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "launcher-view.h"
+#include "launcher-tree-view.h"
#include "category.h"
#include "settings.h"
@@ -37,8 +37,7 @@ static gboolean is_separator(GtkTreeModel* model, GtkTreeIter* iter, gpointer)
//-----------------------------------------------------------------------------
-LauncherView::LauncherView() :
- m_model(NULL),
+LauncherTreeView::LauncherTreeView() :
m_icon_size(0),
m_row_activated(false)
{
@@ -51,8 +50,8 @@ LauncherView::LauncherView() :
gtk_tree_view_set_fixed_height_mode(m_view, true);
gtk_tree_view_set_row_separator_func(m_view, &is_separator, NULL, NULL);
create_column();
- g_signal_connect_slot(m_view, "key-press-event", &LauncherView::on_key_press_event, this);
- g_signal_connect_slot(m_view, "key-release-event", &LauncherView::on_key_release_event, this);
+ g_signal_connect_slot(m_view, "key-press-event", &LauncherTreeView::on_key_press_event, this);
+ g_signal_connect_slot(m_view, "key-release-event", &LauncherTreeView::on_key_release_event, this);
// Use single clicks to activate items
exo_tree_view_set_single_click(EXO_TREE_VIEW(m_view), true);
@@ -64,25 +63,23 @@ LauncherView::LauncherView() :
g_object_ref_sink(m_view);
// Handle drag-and-drop
- g_signal_connect_slot(m_view, "button-press-event", &LauncherView::on_button_press_event, this);
- g_signal_connect_slot(m_view, "row-activated", &LauncherView::on_row_activated, this);
- g_signal_connect_slot<GtkTreeView*,GtkTreeIter*,GtkTreePath*>(m_view, "test-collapse-row", &LauncherView::test_row_toggle, this);
- g_signal_connect_slot<GtkTreeView*,GtkTreeIter*,GtkTreePath*>(m_view, "test-expand-row", &LauncherView::test_row_toggle, this);
+ g_signal_connect_slot(m_view, "button-press-event", &LauncherTreeView::on_button_press_event, this);
+ g_signal_connect_slot(m_view, "row-activated", &LauncherTreeView::on_row_activated, this);
+ g_signal_connect_slot<GtkTreeView*,GtkTreeIter*,GtkTreePath*>(m_view, "test-collapse-row", &LauncherTreeView::test_row_toggle, this);
+ g_signal_connect_slot<GtkTreeView*,GtkTreeIter*,GtkTreePath*>(m_view, "test-expand-row", &LauncherTreeView::test_row_toggle, this);
}
//-----------------------------------------------------------------------------
-LauncherView::~LauncherView()
+LauncherTreeView::~LauncherTreeView()
{
- m_model = NULL;
-
gtk_widget_destroy(GTK_WIDGET(m_view));
g_object_unref(m_view);
}
//-----------------------------------------------------------------------------
-GtkTreePath* LauncherView::get_cursor() const
+GtkTreePath* LauncherTreeView::get_cursor() const
{
GtkTreePath* path = NULL;
gtk_tree_view_get_cursor(m_view, &path, NULL);
@@ -91,7 +88,7 @@ GtkTreePath* LauncherView::get_cursor() const
//-----------------------------------------------------------------------------
-GtkTreePath* LauncherView::get_path_at_pos(int x, int y) const
+GtkTreePath* LauncherTreeView::get_path_at_pos(int x, int y) const
{
GtkTreePath* path = NULL;
gtk_tree_view_get_path_at_pos(m_view, x, y, &path, NULL, NULL, NULL);
@@ -100,7 +97,7 @@ GtkTreePath* LauncherView::get_path_at_pos(int x, int y) const
//-----------------------------------------------------------------------------
-GtkTreePath* LauncherView::get_selected_path() const
+GtkTreePath* LauncherTreeView::get_selected_path() const
{
GtkTreePath* path = NULL;
GtkTreeSelection* selection = gtk_tree_view_get_selection(m_view);
@@ -114,7 +111,7 @@ GtkTreePath* LauncherView::get_selected_path() const
//-----------------------------------------------------------------------------
-void LauncherView::activate_path(GtkTreePath* path)
+void LauncherTreeView::activate_path(GtkTreePath* path)
{
GtkTreeViewColumn* column = gtk_tree_view_get_column(m_view, 0);
gtk_tree_view_row_activated(m_view, path, column);
@@ -122,14 +119,14 @@ void LauncherView::activate_path(GtkTreePath* path)
//-----------------------------------------------------------------------------
-void LauncherView::scroll_to_path(GtkTreePath* path)
+void LauncherTreeView::scroll_to_path(GtkTreePath* path)
{
gtk_tree_view_scroll_to_cell(m_view, path, NULL, true, 0.5f, 0.5f);
}
//-----------------------------------------------------------------------------
-void LauncherView::select_path(GtkTreePath* path)
+void LauncherTreeView::select_path(GtkTreePath* path)
{
GtkTreeSelection* selection = gtk_tree_view_get_selection(m_view);
gtk_tree_selection_select_path(selection, path);
@@ -137,7 +134,7 @@ void LauncherView::select_path(GtkTreePath* path)
//-----------------------------------------------------------------------------
-void LauncherView::set_cursor(GtkTreePath* path)
+void LauncherTreeView::set_cursor(GtkTreePath* path)
{
GtkTreeSelection* selection = gtk_tree_view_get_selection(m_view);
GtkSelectionMode mode = gtk_tree_selection_get_mode(selection);
@@ -148,14 +145,14 @@ void LauncherView::set_cursor(GtkTreePath* path)
//-----------------------------------------------------------------------------
-void LauncherView::set_fixed_height_mode(bool fixed_height)
+void LauncherTreeView::set_fixed_height_mode(bool fixed_height)
{
gtk_tree_view_set_fixed_height_mode(m_view, fixed_height);
}
//-----------------------------------------------------------------------------
-void LauncherView::set_selection_mode(GtkSelectionMode mode)
+void LauncherTreeView::set_selection_mode(GtkSelectionMode mode)
{
GtkTreeSelection* selection = gtk_tree_view_get_selection(m_view);
gtk_tree_selection_set_mode(selection, mode);
@@ -163,28 +160,36 @@ void LauncherView::set_selection_mode(GtkSelectionMode mode)
//-----------------------------------------------------------------------------
-void LauncherView::hide_tooltips()
+void LauncherTreeView::hide_tooltips()
{
gtk_tree_view_set_tooltip_column(m_view, -1);
}
//-----------------------------------------------------------------------------
-void LauncherView::show_tooltips()
+void LauncherTreeView::show_tooltips()
+{
+ gtk_tree_view_set_tooltip_column(m_view, COLUMN_TOOLTIP);
+}
+
+//-----------------------------------------------------------------------------
+
+void LauncherTreeView::clear_selection()
{
- gtk_tree_view_set_tooltip_column(m_view, LauncherView::COLUMN_TOOLTIP);
+ GtkTreeSelection* selection = gtk_tree_view_get_selection(m_view);
+ gtk_tree_selection_unselect_all(selection);
}
//-----------------------------------------------------------------------------
-void LauncherView::collapse_all()
+void LauncherTreeView::collapse_all()
{
gtk_tree_view_collapse_all(m_view);
}
//-----------------------------------------------------------------------------
-void LauncherView::set_model(GtkTreeModel* model)
+void LauncherTreeView::set_model(GtkTreeModel* model)
{
m_model = model;
gtk_tree_view_set_model(m_view, model);
@@ -192,7 +197,7 @@ void LauncherView::set_model(GtkTreeModel* model)
//-----------------------------------------------------------------------------
-void LauncherView::unset_model()
+void LauncherTreeView::unset_model()
{
m_model = NULL;
gtk_tree_view_set_model(m_view, NULL);
@@ -200,35 +205,35 @@ void LauncherView::unset_model()
//-----------------------------------------------------------------------------
-void LauncherView::set_drag_source(GdkModifierType start_button_mask, const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions)
+void LauncherTreeView::set_drag_source(GdkModifierType start_button_mask, const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions)
{
gtk_tree_view_enable_model_drag_source(m_view, start_button_mask, targets, n_targets, actions);
}
//-----------------------------------------------------------------------------
-void LauncherView::set_drag_dest(const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions)
+void LauncherTreeView::set_drag_dest(const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions)
{
gtk_tree_view_enable_model_drag_dest(m_view, targets, n_targets, actions);
}
//-----------------------------------------------------------------------------
-void LauncherView::unset_drag_source()
+void LauncherTreeView::unset_drag_source()
{
gtk_tree_view_unset_rows_drag_source(m_view);
}
//-----------------------------------------------------------------------------
-void LauncherView::unset_drag_dest()
+void LauncherTreeView::unset_drag_dest()
{
gtk_tree_view_unset_rows_drag_dest(m_view);
}
//-----------------------------------------------------------------------------
-void LauncherView::reload_icon_size()
+void LauncherTreeView::reload_icon_size()
{
// Force exo to reload SVG icons
if (m_icon_size != wm_settings->launcher_icon_size.get_size())
@@ -240,7 +245,7 @@ void LauncherView::reload_icon_size()
//-----------------------------------------------------------------------------
-void LauncherView::create_column()
+void LauncherTreeView::create_column()
{
m_icon_size = wm_settings->launcher_icon_size.get_size();
@@ -254,13 +259,13 @@ void LauncherView::create_column()
g_object_set(icon_renderer, "follow-state", false, NULL);
g_object_set(icon_renderer, "size", m_icon_size, NULL);
gtk_tree_view_column_pack_start(m_column, icon_renderer, false);
- gtk_tree_view_column_add_attribute(m_column, icon_renderer, "icon", LauncherView::COLUMN_ICON);
+ gtk_tree_view_column_add_attribute(m_column, icon_renderer, "icon", COLUMN_ICON);
}
GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new();
g_object_set(text_renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
gtk_tree_view_column_pack_start(m_column, text_renderer, true);
- gtk_tree_view_column_add_attribute(m_column, text_renderer, "markup", LauncherView::COLUMN_TEXT);
+ gtk_tree_view_column_add_attribute(m_column, text_renderer, "markup", COLUMN_TEXT);
gtk_tree_view_column_set_sizing(m_column, GTK_TREE_VIEW_COLUMN_FIXED);
@@ -269,7 +274,7 @@ void LauncherView::create_column()
//-----------------------------------------------------------------------------
-gboolean LauncherView::on_key_press_event(GtkWidget*, GdkEvent* event)
+gboolean LauncherTreeView::on_key_press_event(GtkWidget*, GdkEvent* event)
{
GdkEventKey* key_event = reinterpret_cast<GdkEventKey*>(event);
if ((key_event->keyval == GDK_KEY_Up) || (key_event->keyval == GDK_KEY_Down))
@@ -281,7 +286,7 @@ gboolean LauncherView::on_key_press_event(GtkWidget*, GdkEvent* event)
//-----------------------------------------------------------------------------
-gboolean LauncherView::on_key_release_event(GtkWidget*, GdkEvent* event)
+gboolean LauncherTreeView::on_key_release_event(GtkWidget*, GdkEvent* event)
{
GdkEventKey* key_event = reinterpret_cast<GdkEventKey*>(event);
if ((key_event->keyval == GDK_KEY_Up) || (key_event->keyval == GDK_KEY_Down))
@@ -293,7 +298,7 @@ gboolean LauncherView::on_key_release_event(GtkWidget*, GdkEvent* event)
//-----------------------------------------------------------------------------
-gboolean LauncherView::on_button_press_event(GtkWidget*, GdkEvent*)
+gboolean LauncherTreeView::on_button_press_event(GtkWidget*, GdkEvent*)
{
m_row_activated = false;
@@ -302,7 +307,7 @@ gboolean LauncherView::on_button_press_event(GtkWidget*, GdkEvent*)
//-----------------------------------------------------------------------------
-void LauncherView::on_row_activated(GtkTreeView* tree_view, GtkTreePath* path, GtkTreeViewColumn*)
+void LauncherTreeView::on_row_activated(GtkTreeView* tree_view, GtkTreePath* path, GtkTreeViewColumn*)
{
Element* element = NULL;
GtkTreeIter iter;
@@ -327,7 +332,7 @@ void LauncherView::on_row_activated(GtkTreeView* tree_view, GtkTreePath* path, G
//-----------------------------------------------------------------------------
-gboolean LauncherView::test_row_toggle()
+gboolean LauncherTreeView::test_row_toggle()
{
bool allow = !m_row_activated;
m_row_activated = false;
diff --git a/panel-plugin/launcher-view.h b/panel-plugin/launcher-tree-view.h
similarity index 84%
copy from panel-plugin/launcher-view.h
copy to panel-plugin/launcher-tree-view.h
index 95c28a4..4c0a30f 100644
--- a/panel-plugin/launcher-view.h
+++ b/panel-plugin/launcher-tree-view.h
@@ -15,19 +15,19 @@
* along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef WHISKERMENU_LAUNCHER_VIEW_H
-#define WHISKERMENU_LAUNCHER_VIEW_H
+#ifndef WHISKERMENU_LAUNCHER_TREE_VIEW_H
+#define WHISKERMENU_LAUNCHER_TREE_VIEW_H
-#include <gtk/gtk.h>
+#include "launcher-view.h"
namespace WhiskerMenu
{
-class LauncherView
+class LauncherTreeView : public LauncherView
{
public:
- LauncherView();
- ~LauncherView();
+ LauncherTreeView();
+ ~LauncherTreeView();
GtkWidget* get_widget() const
{
@@ -48,13 +48,9 @@ public:
void hide_tooltips();
void show_tooltips();
+ void clear_selection();
void collapse_all();
- GtkTreeModel* get_model() const
- {
- return m_model;
- }
-
void set_model(GtkTreeModel* model);
void unset_model();
@@ -65,15 +61,6 @@ public:
void reload_icon_size();
- enum Columns
- {
- COLUMN_ICON = 0,
- COLUMN_TEXT,
- COLUMN_TOOLTIP,
- COLUMN_LAUNCHER,
- N_COLUMNS
- };
-
private:
void create_column();
gboolean on_key_press_event(GtkWidget*, GdkEvent* event);
@@ -83,7 +70,6 @@ private:
gboolean test_row_toggle();
private:
- GtkTreeModel* m_model;
GtkTreeView* m_view;
GtkTreeViewColumn* m_column;
int m_icon_size;
@@ -92,4 +78,4 @@ private:
}
-#endif // WHISKERMENU_LAUNCHER_VIEW_H
+#endif // WHISKERMENU_LAUNCHER_TREE_VIEW_H
diff --git a/panel-plugin/launcher-view.h b/panel-plugin/launcher-view.h
index 95c28a4..976f686 100644
--- a/panel-plugin/launcher-view.h
+++ b/panel-plugin/launcher-view.h
@@ -26,44 +26,48 @@ namespace WhiskerMenu
class LauncherView
{
public:
- LauncherView();
- ~LauncherView();
+ LauncherView() :
+ m_model(NULL)
+ {
+ }
- GtkWidget* get_widget() const
+ virtual ~LauncherView()
{
- return GTK_WIDGET(m_view);
}
- GtkTreePath* get_cursor() const;
- GtkTreePath* get_path_at_pos(int x, int y) const;
- GtkTreePath* get_selected_path() const;
- void activate_path(GtkTreePath* path);
- void scroll_to_path(GtkTreePath* path);
- void select_path(GtkTreePath* path);
- void set_cursor(GtkTreePath* path);
+ virtual GtkWidget* get_widget() const=0;
- void set_fixed_height_mode(bool fixed_height);
- void set_selection_mode(GtkSelectionMode mode);
+ virtual GtkTreePath* get_cursor() const=0;
+ virtual GtkTreePath* get_path_at_pos(int x, int y) const=0;
+ virtual GtkTreePath* get_selected_path() const=0;
+ virtual void activate_path(GtkTreePath* path)=0;
+ virtual void scroll_to_path(GtkTreePath* path)=0;
+ virtual void select_path(GtkTreePath* path)=0;
+ virtual void set_cursor(GtkTreePath* path)=0;
- void hide_tooltips();
- void show_tooltips();
+ virtual void set_fixed_height_mode(bool fixed_height)=0;
+ virtual void set_selection_mode(GtkSelectionMode mode)=0;
- void collapse_all();
+ virtual void hide_tooltips()=0;
+ virtual void show_tooltips()=0;
+
+ virtual void clear_selection()=0;
+ virtual void collapse_all()=0;
GtkTreeModel* get_model() const
{
return m_model;
}
- void set_model(GtkTreeModel* model);
- void unset_model();
+ virtual void set_model(GtkTreeModel* model)=0;
+ virtual void unset_model()=0;
- void set_drag_source(GdkModifierType start_button_mask, const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions);
- void set_drag_dest(const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions);
- void unset_drag_source();
- void unset_drag_dest();
+ virtual void set_drag_source(GdkModifierType start_button_mask, const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions)=0;
+ virtual void set_drag_dest(const GtkTargetEntry* targets, gint n_targets, GdkDragAction actions)=0;
+ virtual void unset_drag_source()=0;
+ virtual void unset_drag_dest()=0;
- void reload_icon_size();
+ virtual void reload_icon_size()=0;
enum Columns
{
@@ -74,20 +78,8 @@ public:
N_COLUMNS
};
-private:
- void create_column();
- gboolean on_key_press_event(GtkWidget*, GdkEvent* event);
- gboolean on_key_release_event(GtkWidget*, GdkEvent* event);
- gboolean on_button_press_event(GtkWidget*, GdkEvent* event);
- void on_row_activated(GtkTreeView* tree_view, GtkTreePath* path, GtkTreeViewColumn* column);
- gboolean test_row_toggle();
-
-private:
+protected:
GtkTreeModel* m_model;
- GtkTreeView* m_view;
- GtkTreeViewColumn* m_column;
- int m_icon_size;
- bool m_row_activated;
};
}
diff --git a/panel-plugin/page.cpp b/panel-plugin/page.cpp
index 3b84091..a48b107 100644
--- a/panel-plugin/page.cpp
+++ b/panel-plugin/page.cpp
@@ -19,7 +19,7 @@
#include "favorites-page.h"
#include "launcher.h"
-#include "launcher-view.h"
+#include "launcher-tree-view.h"
#include "recent-page.h"
#include "slot.h"
#include "window.h"
@@ -40,14 +40,7 @@ Page::Page(Window* window) :
m_reorderable(false)
{
// Create view
- m_view = new LauncherView();
- g_signal_connect_slot(m_view->get_widget(), "button-press-event", &Page::view_button_press_event, this);
- g_signal_connect_slot(m_view->get_widget(), "button-release-event", &Page::view_button_release_event, this);
- g_signal_connect_slot(m_view->get_widget(), "drag-data-get", &Page::view_drag_data_get, this);
- g_signal_connect_slot(m_view->get_widget(), "drag-end", &Page::view_drag_end, this);
- g_signal_connect_slot(m_view->get_widget(), "popup-menu", &Page::view_popup_menu_event, this);
- g_signal_connect_slot(m_view->get_widget(), "row-activated", &Page::item_activated, this);
- g_signal_connect_swapped(m_view->get_widget(), "start-interactive-search", G_CALLBACK(gtk_widget_grab_focus), m_window->get_search_entry());
+ create_view();
// Add scrolling to view
m_widget = gtk_scrolled_window_new(NULL, NULL);
@@ -124,6 +117,21 @@ void Page::set_reorderable(bool reorderable)
//-----------------------------------------------------------------------------
+void Page::create_view()
+{
+ m_view = new LauncherTreeView();
+ g_signal_connect(m_view->get_widget(), "row-activated", G_CALLBACK(&Page::row_activated_slot), this);
+ g_signal_connect_swapped(m_view->get_widget(), "start-interactive-search", G_CALLBACK(gtk_widget_grab_focus), m_window->get_search_entry());
+ g_signal_connect_slot(m_view->get_widget(), "button-press-event", &Page::view_button_press_event, this);
+ g_signal_connect_slot(m_view->get_widget(), "button-release-event", &Page::view_button_release_event, this);
+ g_signal_connect_slot(m_view->get_widget(), "drag-data-get", &Page::view_drag_data_get, this);
+ g_signal_connect_slot(m_view->get_widget(), "drag-end", &Page::view_drag_end, this);
+ g_signal_connect_slot(m_view->get_widget(), "popup-menu", &Page::view_popup_menu_event, this);
+ set_reorderable(m_reorderable);
+}
+
+//-----------------------------------------------------------------------------
+
bool Page::remember_launcher(Launcher*)
{
return true;
@@ -131,10 +139,10 @@ bool Page::remember_launcher(Launcher*)
//-----------------------------------------------------------------------------
-void Page::item_activated(GtkTreeView* view, GtkTreePath* path, GtkTreeViewColumn*)
+void Page::launcher_activated(GtkTreePath* path)
{
GtkTreeIter iter;
- GtkTreeModel* model = gtk_tree_view_get_model(view);
+ GtkTreeModel* model = m_view->get_model();
gtk_tree_model_get_iter(model, &iter, path);
// Find element
@@ -159,12 +167,12 @@ void Page::item_activated(GtkTreeView* view, GtkTreePath* path, GtkTreeViewColum
m_window->hide();
// Execute app
- element->run(gtk_widget_get_screen(GTK_WIDGET(view)));
+ element->run(gtk_widget_get_screen(m_widget));
}
//-----------------------------------------------------------------------------
-void Page::item_action_activated(GtkMenuItem* menuitem, DesktopAction* action)
+void Page::launcher_action_activated(GtkMenuItem* menuitem, DesktopAction* action)
{
g_assert(m_selected_launcher != NULL);
@@ -330,7 +338,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
GtkWidget* image = gtk_image_new_from_icon_name(action->get_icon(), GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
G_GNUC_END_IGNORE_DEPRECATIONS
- g_signal_connect_slot(menuitem, "activate", &Page::item_action_activated, this, action);
+ g_signal_connect_slot(menuitem, "activate", &Page::launcher_action_activated, this, action);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
}
@@ -377,7 +385,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
gtk_widget_show_all(menu);
// Show context menu
- gtk_tree_view_set_hover_selection(GTK_TREE_VIEW(m_view->get_widget()), false);
gtk_menu_attach_to_widget(GTK_MENU(menu), m_view->get_widget(), NULL);
gtk_menu_popup_at_pointer(GTK_MENU(menu), event);
}
@@ -388,8 +395,6 @@ void Page::destroy_context_menu(GtkMenuShell* menu)
{
m_selected_launcher = NULL;
- gtk_tree_view_set_hover_selection(GTK_TREE_VIEW(m_view->get_widget()), true);
-
gtk_widget_destroy(GTK_WIDGET(menu));
m_window->on_context_menu_destroyed();
diff --git a/panel-plugin/page.h b/panel-plugin/page.h
index cdfcaca..a38b17d 100644
--- a/panel-plugin/page.h
+++ b/panel-plugin/page.h
@@ -52,12 +52,17 @@ protected:
return m_window;
}
+ virtual void view_created()
+ {
+ }
+
void set_reorderable(bool reorderable);
private:
+ void create_view();
virtual bool remember_launcher(Launcher* launcher);
- void item_activated(GtkTreeView* view, GtkTreePath* path, GtkTreeViewColumn*);
- void item_action_activated(GtkMenuItem* menuitem, DesktopAction* action);
+ void launcher_activated(GtkTreePath* path);
+ void launcher_action_activated(GtkMenuItem* menuitem, DesktopAction* action);
gboolean view_button_press_event(GtkWidget* view, GdkEvent* event);
gboolean view_button_release_event(GtkWidget*, GdkEvent* event);
void view_drag_data_get(GtkWidget*, GdkDragContext*, GtkSelectionData* data, guint info, guint);
@@ -73,6 +78,11 @@ private:
void create_context_menu(GtkTreePath* path, GdkEvent* event);
virtual void extend_context_menu(GtkWidget* menu);
+ static void row_activated_slot(GtkTreeView*, GtkTreePath* path, GtkTreeViewColumn*, gpointer user_data)
+ {
+ reinterpret_cast<Page*>(user_data)->launcher_activated(path);
+ }
+
private:
Window* m_window;
GtkWidget* m_widget;
diff --git a/panel-plugin/search-page.cpp b/panel-plugin/search-page.cpp
index 7a742aa..aac145c 100644
--- a/panel-plugin/search-page.cpp
+++ b/panel-plugin/search-page.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013, 2016 Graeme Gott <graeme at gottcode.org>
+ * Copyright (C) 2013, 2016, 2019 Graeme Gott <graeme at gottcode.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -35,7 +35,7 @@ using namespace WhiskerMenu;
SearchPage::SearchPage(Window* window) :
Page(window)
{
- get_view()->set_selection_mode(GTK_SELECTION_BROWSE);
+ view_created();
g_signal_connect_slot(window->get_search_entry(), "icon-release", &SearchPage::clear_search, this);
g_signal_connect_slot(window->get_search_entry(), "key-press-event", &SearchPage::cancel_search, this);
@@ -232,3 +232,10 @@ gboolean SearchPage::cancel_search(GtkWidget* widget, GdkEvent* event)
}
//-----------------------------------------------------------------------------
+
+void SearchPage::view_created()
+{
+ get_view()->set_selection_mode(GTK_SELECTION_BROWSE);
+}
+
+//-----------------------------------------------------------------------------
diff --git a/panel-plugin/search-page.h b/panel-plugin/search-page.h
index 74a417a..bd81f63 100644
--- a/panel-plugin/search-page.h
+++ b/panel-plugin/search-page.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013, 2015 Graeme Gott <graeme at gottcode.org>
+ * Copyright (C) 2013, 2015, 2019 Graeme Gott <graeme at gottcode.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -42,6 +42,7 @@ private:
void activate_search();
void clear_search(GtkEntry* entry, GtkEntryIconPosition icon_pos, GdkEvent*);
gboolean cancel_search(GtkWidget* widget, GdkEvent* event);
+ void view_created();
private:
Query m_query;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list