[gnote] Use popover for gear menu, first batch
- From: Aurimas Černius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote] Use popover for gear menu, first batch
- Date: Sun, 6 Dec 2015 18:29:38 +0000 (UTC)
commit 406aadb41c8bcbfb4438c620ee244a2d8da44e11
Author: Aurimas Černius <aurisc4 gmail com>
Date: Sat Dec 5 17:57:25 2015 +0200
Use popover for gear menu, first batch
src/actionmanager.cpp | 52 ++++++-----------------
src/actionmanager.hpp | 12 ++----
src/iactionmanager.hpp | 9 ++--
src/mainwindowembeds.hpp | 8 ++-
src/notewindow.cpp | 72 +++++++++-----------------------
src/notewindow.hpp | 15 ++----
src/recentchanges.cpp | 101 +++++++++++++++++++++-----------------------
src/recentchanges.hpp | 12 ++---
src/searchnoteswidget.cpp | 12 +++--
src/searchnoteswidget.hpp | 6 +-
src/utils.cpp | 12 +++++-
src/utils.hpp | 4 +-
12 files changed, 129 insertions(+), 186 deletions(-)
---
diff --git a/src/actionmanager.cpp b/src/actionmanager.cpp
index a50d1c3..0868125 100644
--- a/src/actionmanager.cpp
+++ b/src/actionmanager.cpp
@@ -72,6 +72,9 @@ namespace gnote {
populate_action_groups();
make_app_actions();
make_app_menu_items();
+
+ register_main_window_action("close-window");
+ register_main_window_action("delete-note");
}
@@ -216,54 +219,27 @@ namespace gnote {
return section;
}
- void ActionManager::add_main_window_search_action(const Glib::RefPtr<Gtk::Action> & action, int order)
- {
- add_main_window_action(m_main_window_search_actions, action, order);
- signal_main_window_search_actions_changed();
- }
-
- void ActionManager::remove_main_window_search_action(const std::string & name)
- {
- remove_main_window_action(m_main_window_search_actions, name);
- signal_main_window_search_actions_changed();
- }
-
- std::vector<Glib::RefPtr<Gtk::Action> > ActionManager::get_main_window_search_actions()
+ void ActionManager::register_main_window_action(const Glib::ustring & action)
{
- return get_main_window_actions(m_main_window_search_actions);
+ if(find_main_window_action(action) == 0) {
+ m_main_window_actions2.push_back(MainWindowAction::create(action));
+ }
}
- void ActionManager::add_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions,
- const Glib::RefPtr<Gtk::Action> & action, int order)
+ std::vector<MainWindowAction::Ptr> ActionManager::get_main_window_actions() const
{
- std::map<int, Glib::RefPtr<Gtk::Action> >::iterator iter = actions.find(order);
- while(iter != actions.end()) {
- iter = actions.find(++order);
- }
- actions[order] = action;
+ return m_main_window_actions2;
}
- void ActionManager::remove_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions,
- const std::string & name)
+ MainWindowAction::Ptr ActionManager::find_main_window_action(const Glib::ustring & name) const
{
- for(std::map<int, Glib::RefPtr<Gtk::Action> >::iterator iter = actions.begin();
- iter != actions.end(); ++iter) {
- if(iter->second->get_name() == name) {
- actions.erase(iter);
- break;
+ FOREACH(MainWindowAction::Ptr a, m_main_window_actions2) {
+ if(a->get_name() == name) {
+ return a;
}
}
- }
- std::vector<Glib::RefPtr<Gtk::Action> > ActionManager::get_main_window_actions(
- std::map<int, Glib::RefPtr<Gtk::Action> > & actions)
- {
- std::vector<Glib::RefPtr<Gtk::Action> > res;
- for(std::map<int, Glib::RefPtr<Gtk::Action> >::iterator iter = actions.begin();
- iter != actions.end(); ++iter) {
- res.push_back(iter->second);
- }
- return res;
+ return MainWindowAction::Ptr();
}
}
diff --git a/src/actionmanager.hpp b/src/actionmanager.hpp
index dffb33c..2925157 100644
--- a/src/actionmanager.hpp
+++ b/src/actionmanager.hpp
@@ -57,17 +57,13 @@ public:
virtual void add_app_menu_item(int section, int order, const std::string & label,
const std::string & action_def) override;
Glib::RefPtr<Gio::Menu> get_app_menu() const;
- virtual void add_main_window_search_action(const Glib::RefPtr<Gtk::Action> & action, int order) override;
- virtual void remove_main_window_search_action(const std::string & name) override;
- virtual std::vector<Glib::RefPtr<Gtk::Action> > get_main_window_search_actions() override;
+ virtual void register_main_window_action(const Glib::ustring & action) override;
+ virtual std::vector<MainWindowAction::Ptr> get_main_window_actions() const override;
+ virtual MainWindowAction::Ptr find_main_window_action(const Glib::ustring & name) const override;
private:
void make_app_actions();
void make_app_menu_items();
Glib::RefPtr<Gio::Menu> make_app_menu_section(int section) const;
- void add_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions,
- const Glib::RefPtr<Gtk::Action> & action, int order);
- void remove_main_window_action(std::map<int, Glib::RefPtr<Gtk::Action> > & actions, const std::string &
name);
- std::vector<Glib::RefPtr<Gtk::Action> > get_main_window_actions(std::map<int, Glib::RefPtr<Gtk::Action> >
& actions);
Glib::RefPtr<Gtk::ActionGroup> m_main_window_actions;
@@ -95,7 +91,7 @@ private:
};
typedef std::multimap<int, AppMenuItem> AppMenuItemMultiMap;
AppMenuItemMultiMap m_app_menu_items;
- std::map<int, Glib::RefPtr<Gtk::Action> > m_main_window_search_actions;
+ std::vector<MainWindowAction::Ptr> m_main_window_actions2;
};
diff --git a/src/iactionmanager.hpp b/src/iactionmanager.hpp
index 6ac6725..3017778 100644
--- a/src/iactionmanager.hpp
+++ b/src/iactionmanager.hpp
@@ -26,6 +26,7 @@
#include <gtkmm/uimanager.h>
#include "base/singleton.hpp"
+#include "mainwindowaction.hpp"
namespace gnote {
@@ -57,11 +58,9 @@ public:
virtual Glib::RefPtr<Gio::SimpleAction> add_app_action(const std::string & name) = 0;
virtual void add_app_menu_item(int section, int order, const std::string & label,
const std::string & action_def) = 0;
- virtual void add_main_window_search_action(const Glib::RefPtr<Gtk::Action> & action, int order) = 0;
- virtual void remove_main_window_search_action(const std::string & name) = 0;
- virtual std::vector<Glib::RefPtr<Gtk::Action> > get_main_window_search_actions() = 0;
-
- sigc::signal<void> signal_main_window_search_actions_changed;
+ virtual void register_main_window_action(const Glib::ustring & action) = 0;
+ virtual std::vector<MainWindowAction::Ptr> get_main_window_actions() const = 0;
+ virtual MainWindowAction::Ptr find_main_window_action(const Glib::ustring & name) const = 0;
};
}
diff --git a/src/mainwindowembeds.hpp b/src/mainwindowembeds.hpp
index c306cc6..aa0d230 100644
--- a/src/mainwindowembeds.hpp
+++ b/src/mainwindowembeds.hpp
@@ -1,7 +1,7 @@
/*
* gnote
*
- * Copyright (C) 2013 Aurimas Cernius
+ * Copyright (C) 2013,2015 Aurimas Cernius
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,6 +24,8 @@
#include <gtkmm/widget.h>
+#include "mainwindowaction.hpp"
+
namespace gnote {
@@ -87,8 +89,8 @@ public:
class HasActions
{
public:
- virtual std::vector<Glib::RefPtr<Gtk::Action> > get_widget_actions() = 0;
- virtual sigc::signal<void> & signal_actions_changed() = 0;
+ virtual std::vector<Gtk::Widget*> get_popover_widgets() = 0;
+ virtual std::vector<MainWindowAction::Ptr> get_widget_actions() = 0;
};
}
diff --git a/src/notewindow.cpp b/src/notewindow.cpp
index f18b7cf..845a979 100644
--- a/src/notewindow.cpp
+++ b/src/notewindow.cpp
@@ -32,6 +32,7 @@
#include <gtkmm/separatormenuitem.h>
#include "debug.hpp"
+#include "iactionmanager.hpp"
#include "iconmanager.hpp"
#include "mainwindow.hpp"
#include "note.hpp"
@@ -45,6 +46,7 @@
#include "itagmanager.hpp"
#include "notebooks/notebookmanager.hpp"
#include "sharp/exception.hpp"
+#include "mainwindowaction.hpp"
namespace gnote {
@@ -176,6 +178,12 @@ namespace gnote {
if(parent) {
parent->set_focus(*m_editor);
}
+
+ // Don't allow deleting the "Start Here" note...
+ if(!m_note.is_special()) {
+ m_delete_note_slot = IActionManager::obj().find_main_window_action("delete-note")->signal_activate()
+ .connect(sigc::mem_fun(*this, &NoteWindow::on_delete_button_clicked));
+ }
}
void NoteWindow::background()
@@ -202,6 +210,7 @@ namespace gnote {
}
m_note.save(); // to update not title immediately in notes list
+ m_delete_note_slot.disconnect();
}
void NoteWindow::hint_size(int & width, int & height)
@@ -286,58 +295,24 @@ namespace gnote {
return m_embeddable_toolbar;
}
- std::vector<Glib::RefPtr<Gtk::Action> > NoteWindow::get_widget_actions()
- {
- std::vector<Glib::RefPtr<Gtk::Action> > res;
- for(std::map<int, Glib::RefPtr<Gtk::Action> >::iterator iter = m_widget_actions.begin();
- iter != m_widget_actions.end(); ++iter) {
- res.push_back(iter->second);
- }
-
- res.push_back(Glib::RefPtr<Gtk::Action>());
- res.push_back(m_important_action);
- if(m_delete_action) {
- // Separator before delete
- res.push_back(m_delete_action);
- }
- return res;
- }
-
- sigc::signal<void> & NoteWindow::signal_actions_changed()
- {
- return m_signal_actions_changed;
- }
-
- void NoteWindow::add_widget_action(const Glib::RefPtr<Gtk::Action> & action, int order)
+ std::vector<Gtk::Widget*> NoteWindow::get_popover_widgets()
{
- std::map<int, Glib::RefPtr<Gtk::Action> >::iterator iter = m_widget_actions.find(order);
- while(iter != m_widget_actions.end()) {
- iter = m_widget_actions.find(++order);
- }
- m_widget_actions[order] = action;
- m_signal_actions_changed();
- if(Glib::RefPtr<NonModifyingNoteAction>::cast_dynamic(action) == 0) {
- action->set_sensitive(m_enabled);
- }
+ std::vector<Gtk::Widget*> widgets;
+ widgets.push_back(utils::create_popover_button("win.delete-note", _("_Delete")));
+ return widgets;
}
- void NoteWindow::remove_widget_action(const std::string & name)
+ std::vector<MainWindowAction::Ptr> NoteWindow::get_widget_actions()
{
- for(std::map<int, Glib::RefPtr<Gtk::Action> >::iterator iter = m_widget_actions.begin();
- iter != m_widget_actions.end(); ++iter) {
- if(iter->second->get_name() == name) {
- m_widget_actions.erase(iter);
- break;
- }
- }
- m_signal_actions_changed();
+ std::vector<MainWindowAction::Ptr> res;
+ IActionManager::obj().find_main_window_action("delete-note");
+ return res;
}
-
// Delete this Note.
//
- void NoteWindow::on_delete_button_clicked()
+ void NoteWindow::on_delete_button_clicked(const Glib::VariantBase&)
{
// Prompt for note deletion
std::list<Note::Ptr> single_note_list;
@@ -426,13 +401,6 @@ namespace gnote {
notebooks::NotebookManager::obj().signal_note_pin_status_changed
.connect(sigc::mem_fun(*this, &NoteWindow::on_pin_status_changed));
- // Don't allow deleting the "Start Here" note...
- if(!m_note.is_special()) {
- m_delete_action = Gtk::Action::create("delete-note", _("_Delete"), _("Delete this note"));
- m_delete_action->signal_activate()
- .connect(sigc::mem_fun(*this, &NoteWindow::on_delete_button_clicked));
- }
-
grid->property_margin_left() = 12;
grid->show_all();
return grid;
@@ -617,10 +585,10 @@ namespace gnote {
embeddable_toolbar()->set_sensitive(m_enabled);
if(m_global_keys)
m_global_keys->enabled(m_enabled);
- FOREACH(const Glib::RefPtr<Gtk::Action> & action, get_widget_actions()) {
+ FOREACH(const MainWindowAction::Ptr & action, get_widget_actions()) {
// A list includes empty actions to mark separators, non-modifying actions are always enabled
if(action != 0 && Glib::RefPtr<NonModifyingNoteAction>::cast_dynamic(action) == 0) {
- action->set_sensitive(enable);
+ action->set_enabled(enable);
}
}
}
diff --git a/src/notewindow.hpp b/src/notewindow.hpp
index 98faaf7..1c2a838 100644
--- a/src/notewindow.hpp
+++ b/src/notewindow.hpp
@@ -1,7 +1,7 @@
/*
* gnote
*
- * Copyright (C) 2011-2014 Aurimas Cernius
+ * Copyright (C) 2011-2015 Aurimas Cernius
* Copyright (C) 2009 Hubert Figuiere
*
* This program is free software: you can redistribute it and/or modify
@@ -197,10 +197,8 @@ public:
virtual void reference() const override;
virtual void unreference() const override;
};
- virtual std::vector<Glib::RefPtr<Gtk::Action> > get_widget_actions() override;
- virtual sigc::signal<void> & signal_actions_changed() override;
- void add_widget_action(const Glib::RefPtr<Gtk::Action> & action, int order);
- void remove_widget_action(const std::string & name);
+ virtual std::vector<Gtk::Widget*> get_popover_widgets() override;
+ virtual std::vector<MainWindowAction::Ptr> get_widget_actions() override;
void set_size(int width, int height)
{
@@ -232,7 +230,7 @@ private:
static Glib::RefPtr<Gio::Icon> get_icon_pin_active();
static Glib::RefPtr<Gio::Icon> get_icon_pin_down();
- void on_delete_button_clicked();
+ void on_delete_button_clicked(const Glib::VariantBase&);
void on_selection_mark_set(const Gtk::TextIter&, const Glib::RefPtr<Gtk::TextMark>&);
void on_populate_popup(Gtk::Menu*);
Gtk::Grid *make_toolbar();
@@ -264,7 +262,7 @@ private:
Gtk::ScrolledWindow *m_editor_window;
NoteFindHandler m_find_handler;
utils::CheckAction::Ptr m_important_action;
- Glib::RefPtr<Gtk::Action> m_delete_action;
+ sigc::connection m_delete_note_slot;
Gtk::Grid *m_template_widget;
Gtk::CheckButton *m_save_size_check_button;
Gtk::CheckButton *m_save_selection_check_button;
@@ -274,9 +272,6 @@ private:
utils::InterruptableTimeout *m_mark_set_timeout;
bool m_enabled;
- std::map<int, Glib::RefPtr<Gtk::Action> > m_widget_actions;
- sigc::signal<void> m_signal_actions_changed;
-
Tag::Ptr m_template_tag;
Tag::Ptr m_template_save_size_tag;
Tag::Ptr m_template_save_selection_tag;
diff --git a/src/recentchanges.cpp b/src/recentchanges.cpp
index d838809..39f505f 100644
--- a/src/recentchanges.cpp
+++ b/src/recentchanges.cpp
@@ -32,6 +32,7 @@
#include <gtkmm/stock.h>
#include "debug.hpp"
+#include "iactionmanager.hpp"
#include "ignote.hpp"
#include "note.hpp"
#include "notemanager.hpp"
@@ -39,7 +40,6 @@
#include "recentchanges.hpp"
#include "sharp/string.hpp"
-
namespace gnote {
NoteRecentChanges::NoteRecentChanges(NoteManager& m)
@@ -100,7 +100,13 @@ namespace gnote {
m_keybinder.add_accelerator(sigc::mem_fun(*this, &NoteRecentChanges::close_window),
GDK_KEY_Q, Gdk::CONTROL_MASK, (Gtk::AccelFlags)0);
- m_window_menu_default = make_window_menu(m_window_actions_button, std::vector<Gtk::MenuItem*>());
+ FOREACH(MainWindowAction::Ptr action, IActionManager::obj().get_main_window_actions()) {
+ add_action(action);
+ }
+ IActionManager::obj().find_main_window_action("close-window")->signal_activate()
+ .connect(sigc::mem_fun(*this, &NoteRecentChanges::on_close_window));
+
+ m_window_menu_default = make_window_menu(m_window_actions_button, std::vector<Gtk::Widget*>());
embed_widget(m_search_notes_widget);
}
@@ -114,10 +120,10 @@ namespace gnote {
delete m_entry_changed_timeout;
}
if(m_window_menu_embedded) {
- delete m_window_menu_embedded;
+ gtk_widget_destroy(GTK_WIDGET(m_window_menu_embedded));
}
if(m_window_menu_default) {
- delete m_window_menu_default;
+ gtk_widget_destroy(GTK_WIDGET(m_window_menu_default));
}
}
@@ -366,6 +372,12 @@ namespace gnote {
}
+ void NoteRecentChanges::on_close_window(const Glib::VariantBase&)
+ {
+ close_window();
+ }
+
+
bool NoteRecentChanges::on_delete(GdkEventAny *)
{
close_window();
@@ -513,10 +525,8 @@ namespace gnote {
try {
HasActions &has_actions = dynamic_cast<HasActions&>(widget);
- m_current_embedded_actions_slot = has_actions.signal_actions_changed().connect(
- boost::bind(sigc::mem_fun(*this, &NoteRecentChanges::on_main_window_actions_changed),
- &m_window_menu_embedded));
- on_main_window_actions_changed(&m_window_menu_embedded);
+ std::vector<Gtk::Widget*> items = has_actions.get_popover_widgets();
+ m_window_menu_embedded = make_window_menu(m_window_actions_button, items);
}
catch(std::bad_cast&) {
}
@@ -533,9 +543,18 @@ namespace gnote {
m_embed_box.remove(wid);
m_current_embedded_name_slot.disconnect();
- m_current_embedded_actions_slot.disconnect();
+ try {
+ HasActions &has_actions = dynamic_cast<HasActions&>(widget);
+ FOREACH(MainWindowAction::Ptr action, has_actions.get_widget_actions()) {
+ if(action != 0) {
+ remove_action(action->get_name());
+ }
+ }
+ }
+ catch(std::bad_cast&) {
+ }
if(m_window_menu_embedded) {
- delete m_window_menu_embedded;
+ gtk_widget_destroy(GTK_WIDGET(m_window_menu_embedded));
m_window_menu_embedded = NULL;
}
}
@@ -678,40 +697,33 @@ namespace gnote {
{
HasActions *embed_with_actions = dynamic_cast<HasActions*>(currently_embedded());
if(embed_with_actions) {
- utils::popup_menu(*m_window_menu_embedded, NULL);
+ gtk_widget_show_all(GTK_WIDGET(m_window_menu_embedded));
}
else {
- utils::popup_menu(*m_window_menu_default, NULL);
+ gtk_widget_show_all(GTK_WIDGET(m_window_menu_default));
}
}
- Gtk::Menu *NoteRecentChanges::make_window_menu(Gtk::Button *button, const std::vector<Gtk::MenuItem*> &
items)
+ GtkPopoverMenu *NoteRecentChanges::make_window_menu(Gtk::Button *button, const std::vector<Gtk::Widget*> &
items)
{
- Gtk::Menu *menu = new Gtk::Menu;
- for(std::vector<Gtk::MenuItem*>::const_iterator iter = items.begin(); iter != items.end(); ++iter) {
- menu->append(**iter);
- }
- if(items.size()) {
- menu->append(*manage(new Gtk::SeparatorMenuItem));
+ GtkPopoverMenu *menu = GTK_POPOVER_MENU(gtk_popover_menu_new());
+ Gtk::Grid *grid = manage(new Gtk::Grid);
+ grid->property_margin() = 10;
+ int top = 0;
+ FOREACH(Gtk::Widget *item, items) {
+ grid->attach(*manage(item), 0, top++, 1, 1);
}
- Gtk::MenuItem *item = manage(new Gtk::MenuItem(_("_Close"), true));
- item->add_accelerator("activate", get_accel_group(), GDK_KEY_W, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
- item->add_accelerator("activate", get_accel_group(), GDK_KEY_Q, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
- item->signal_activate().connect(sigc::mem_fun(*this, &NoteRecentChanges::close_window));
- menu->append(*item);
- menu->property_attach_widget() = button;
- menu->show_all();
- return menu;
- }
- std::vector<Gtk::MenuItem*> & NoteRecentChanges::make_menu_items(std::vector<Gtk::MenuItem*> & items,
- const std::vector<Glib::RefPtr<Gtk::Action> > & actions)
- {
- FOREACH(Glib::RefPtr<Gtk::Action> action, actions) {
- Gtk::MenuItem *item = manage(action ? action->create_menu_item() : new Gtk::SeparatorMenuItem);
- items.push_back(item);
- }
- return items;
+ Gtk::Widget *close_item = manage(utils::create_popover_button("win.close-window", _("_Close")));
+ close_item->add_accelerator("activate", get_accel_group(), GDK_KEY_W, Gdk::CONTROL_MASK,
Gtk::ACCEL_VISIBLE);
+ close_item->add_accelerator("activate", get_accel_group(), GDK_KEY_Q, Gdk::CONTROL_MASK,
Gtk::ACCEL_VISIBLE);
+ grid->attach(*close_item, 0, top++, 1, 1);
+
+ gtk_container_add(GTK_CONTAINER(menu), GTK_WIDGET(grid->gobj()));
+ gtk_popover_set_relative_to(GTK_POPOVER(menu), GTK_WIDGET(button->gobj()));
+ gtk_popover_set_modal(GTK_POPOVER(menu), TRUE);
+ gtk_popover_set_position(GTK_POPOVER(menu), GTK_POS_BOTTOM);
+ return menu;
}
void NoteRecentChanges::on_embedded_name_changed(const std::string & name)
@@ -719,23 +731,6 @@ namespace gnote {
set_title(name);
}
- void NoteRecentChanges::on_main_window_actions_changed(Gtk::Menu **menu)
- {
- if(*menu) {
- delete *menu;
- *menu = NULL;
- }
-
- HasActions *embed_with_actions = dynamic_cast<HasActions*>(currently_embedded());
- if(embed_with_actions) {
- if(!m_window_menu_embedded) {
- std::vector<Gtk::MenuItem*> items;
- m_window_menu_embedded = make_window_menu(m_window_actions_button,
- make_menu_items(items, embed_with_actions->get_widget_actions()));
- }
- }
- }
-
void NoteRecentChanges::on_settings_changed(const Glib::ustring & key)
{
if(key == Preferences::OPEN_NOTES_IN_NEW_WINDOW) {
diff --git a/src/recentchanges.hpp b/src/recentchanges.hpp
index 3153ad1..7852cd0 100644
--- a/src/recentchanges.hpp
+++ b/src/recentchanges.hpp
@@ -26,6 +26,7 @@
#include <string>
+#include <gtk/gtkpopovermenu.h>
#include <gtkmm/alignment.h>
#include <gtkmm/applicationwindow.h>
#include <gtkmm/grid.h>
@@ -83,13 +84,11 @@ private:
void on_search_button_toggled();
void on_find_next_button_clicked();
void on_find_prev_button_clicked();
- Gtk::Menu *make_window_menu(Gtk::Button *button, const std::vector<Gtk::MenuItem*> & items);
- std::vector<Gtk::MenuItem*> & make_menu_items(std::vector<Gtk::MenuItem*> & items,
- const std::vector<Glib::RefPtr<Gtk::Action> > & actions);
+ GtkPopoverMenu *make_window_menu(Gtk::Button *button, const std::vector<Gtk::Widget*> & items);
void on_embedded_name_changed(const std::string & name);
- void on_main_window_actions_changed(Gtk::Menu **menu);
void on_settings_changed(const Glib::ustring & key);
bool on_notes_widget_key_press(GdkEventKey*);
+ void on_close_window(const Glib::VariantBase&);
NoteManager &m_note_manager;
Gtk::Widget *m_header_bar;
@@ -107,10 +106,9 @@ private:
std::list<EmbeddableWidget*> m_embedded_widgets;
bool m_mapped;
sigc::connection m_current_embedded_name_slot;
- sigc::connection m_current_embedded_actions_slot;
utils::InterruptableTimeout *m_entry_changed_timeout;
- Gtk::Menu *m_window_menu_embedded;
- Gtk::Menu *m_window_menu_default;
+ GtkPopoverMenu *m_window_menu_embedded;
+ GtkPopoverMenu *m_window_menu_default;
utils::GlobalKeybinder m_keybinder;
bool m_open_notes_in_new_window;
bool m_close_note_on_escape;
diff --git a/src/searchnoteswidget.cpp b/src/searchnoteswidget.cpp
index 8c17252..d5c4800 100644
--- a/src/searchnoteswidget.cpp
+++ b/src/searchnoteswidget.cpp
@@ -1,7 +1,7 @@
/*
* gnote
*
- * Copyright (C) 2010-2014 Aurimas Cernius
+ * Copyright (C) 2010-2015 Aurimas Cernius
* Copyright (C) 2010 Debarshi Ray
* Copyright (C) 2009 Hubert Figuiere
*
@@ -1425,14 +1425,16 @@ void SearchNotesWidget::size_internals()
}
}
-std::vector<Glib::RefPtr<Gtk::Action> > SearchNotesWidget::get_widget_actions()
+std::vector<Gtk::Widget*> SearchNotesWidget::get_popover_widgets()
{
- return IActionManager::obj().get_main_window_search_actions();
+ std::vector<Gtk::Widget*> widgets;
+ return widgets;
}
-sigc::signal<void> & SearchNotesWidget::signal_actions_changed()
+std::vector<MainWindowAction::Ptr> SearchNotesWidget::get_widget_actions()
{
- return IActionManager::obj().signal_main_window_search_actions_changed;
+ std::vector<MainWindowAction::Ptr> actions;
+ return actions;
}
void SearchNotesWidget::on_settings_changed(const Glib::ustring & key)
diff --git a/src/searchnoteswidget.hpp b/src/searchnoteswidget.hpp
index 995f329..011809f 100644
--- a/src/searchnoteswidget.hpp
+++ b/src/searchnoteswidget.hpp
@@ -1,7 +1,7 @@
/*
* gnote
*
- * Copyright (C) 2010-2014 Aurimas Cernius
+ * Copyright (C) 2010-2015 Aurimas Cernius
* Copyright (C) 2010 Debarshi Ray
* Copyright (C) 2009 Hubert Figuiere
*
@@ -54,8 +54,8 @@ public:
virtual void hint_size(int & width, int & height) override;
virtual void size_internals() override;
virtual void perform_search(const std::string & search_text) override;
- virtual std::vector<Glib::RefPtr<Gtk::Action> > get_widget_actions() override;
- virtual sigc::signal<void> & signal_actions_changed() override;
+ virtual std::vector<Gtk::Widget*> get_popover_widgets() override;
+ virtual std::vector<MainWindowAction::Ptr> get_widget_actions() override;
void select_all_notes_notebook();
void new_note();
diff --git a/src/utils.cpp b/src/utils.cpp
index 2487b04..1217f31 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -1,7 +1,7 @@
/*
* gnote
*
- * Copyright (C) 2010-2014 Aurimas Cernius
+ * Copyright (C) 2010-2015 Aurimas Cernius
* Copyright (C) 2010 Debarshi Ray
* Copyright (C) 2009 Hubert Figuiere
*
@@ -273,6 +273,16 @@ namespace gnote {
}
+ Gtk::Widget * create_popover_button(const Glib::ustring & action, const Glib::ustring & label)
+ {
+ GtkWidget *item = gtk_model_button_new();
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(item), action.c_str());
+ gtk_button_set_label(GTK_BUTTON(item), label.c_str());
+ gtk_button_set_use_underline(GTK_BUTTON(item), TRUE);
+ return Glib::wrap(item);
+ }
+
+
void GlobalKeybinder::add_accelerator(const sigc::slot<void> & handler, guint key,
Gdk::ModifierType modifiers, Gtk::AccelFlags flags)
{
diff --git a/src/utils.hpp b/src/utils.hpp
index 7630724..c16036f 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -1,7 +1,7 @@
/*
* gnote
*
- * Copyright (C) 2011-2013 Aurimas Cernius
+ * Copyright (C) 2011-2013,2015 Aurimas Cernius
* Copyright (C) 2009 Hubert Figuiere
*
* This program is free software: you can redistribute it and/or modify
@@ -67,6 +67,8 @@ namespace gnote {
void main_context_invoke(const sigc::slot<void> & slot);
void main_context_call(const sigc::slot<void> & slot);
+ Gtk::Widget * create_popover_button(const Glib::ustring & action, const Glib::ustring & label);
+
class GlobalKeybinder
{
public:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]