[ekiga/ds-gtk-application] Actions: Fixed behavior to be conform with the rest of Ekiga.
- From: Damien Sandras <dsandras src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga/ds-gtk-application] Actions: Fixed behavior to be conform with the rest of Ekiga.
- Date: Sun, 30 Nov 2014 17:24:50 +0000 (UTC)
commit 07b8d0cc71dfc3939fefabd53708205163b31295
Author: Damien Sandras <dsandras seconix com>
Date: Sun Nov 30 18:11:50 2014 +0100
Actions: Fixed behavior to be conform with the rest of Ekiga.
When a contact is selected in the roster, the actions_changed signal is
emitted with all possible Contact and Heap actions.
This is common to all Ekiga subcomponents: actions_changed always
carries all available Actions for the selected item (including parent
actions). However, right-click menus only present the specific actions
for the selected item.
lib/engine/gui/gtk-frontend/roster-view-gtk.cpp | 43 +++++++++-------------
1 files changed, 18 insertions(+), 25 deletions(-)
---
diff --git a/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp b/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
index 61d417b..3f6c508 100644
--- a/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
+++ b/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
@@ -39,6 +39,7 @@
#include <ctime>
#include <glib/gi18n.h>
#include <gdk/gdkkeysyms.h>
+#include <boost/assign/ptr_list_of.hpp>
#include "ekiga-settings.h"
@@ -704,32 +705,23 @@ on_selection_changed (GtkTreeSelection* selection,
self->priv->presentity_menu.reset ();
self->priv->heap_menu.reset ();
- switch (column_type) {
-
- case TYPE_HEAP:
-
- if (heap != NULL) {
- self->priv->heap_menu = Ekiga::GActorMenuPtr (new Ekiga::GActorMenu (*heap));
- g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0,
- self->priv->heap_menu->get_model ());
- }
- break;
- case TYPE_GROUP:
- g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0, NULL);
- break;
- case TYPE_PRESENTITY:
+ if (heap != NULL)
+ self->priv->heap_menu = Ekiga::GActorMenuPtr (new Ekiga::GActorMenu (*heap, heap->get_name ()));
+ if (presentity != NULL)
+ self->priv->presentity_menu = Ekiga::GActorMenuPtr (new Ekiga::GActorMenu (*presentity,
presentity->get_name ()));
+
+ if (heap && presentity)
+ g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0,
+ self->priv->presentity_menu->get_model (boost::assign::list_of
(self->priv->heap_menu)));
+ else if (heap)
+ g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0,
+ self->priv->heap_menu->get_model ());
+ else if (presentity)
+ g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0,
+ self->priv->presentity_menu->get_model ());
+ else
+ g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0, NULL);
- if (presentity != NULL) {
- self->priv->presentity_menu = Ekiga::GActorMenuPtr (new Ekiga::GActorMenu (*presentity));
- g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0,
- self->priv->presentity_menu->get_model ());
- }
- break;
- default:
-
- g_assert_not_reached ();
- break; // shouldn't happen
- }
g_free (group_name);
g_free (name);
}
@@ -737,6 +729,7 @@ on_selection_changed (GtkTreeSelection* selection,
g_signal_emit (self, signals[ACTIONS_CHANGED_SIGNAL], 0, NULL);
}
+
static gint
on_view_event_after (GtkWidget *tree_view,
GdkEventButton *event,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]