[empathy] Remove menu button, have only app menu
- From: Danielle Madeley <daniellem src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy] Remove menu button, have only app menu
- Date: Tue, 15 May 2012 10:46:17 +0000 (UTC)
commit a51af40f723c6929a461b9af26eaa10b4b714c84
Author: Danielle Madeley <danielle madeley collabora co uk>
Date: Tue May 15 12:16:45 2012 +1000
Remove menu button, have only app menu
src/empathy-roster-window.c | 101 +++++-------------------------------------
src/empathy-roster-window.h | 2 +
src/empathy.c | 18 +------
3 files changed, 17 insertions(+), 104 deletions(-)
---
diff --git a/src/empathy-roster-window.c b/src/empathy-roster-window.c
index 84916cd..4c19929 100644
--- a/src/empathy-roster-window.c
+++ b/src/empathy-roster-window.c
@@ -131,7 +131,7 @@ struct _EmpathyRosterWindowPriv {
GtkWidget *button_account_settings;
GtkWidget *spinner_loading;
- GMenu *menubuttonmodel;
+ GMenu *menumodel;
GMenu *rooms_section;
GtkWidget *balance_vbox;
@@ -1257,7 +1257,7 @@ empathy_roster_window_finalize (GObject *window)
g_object_unref (self->priv->gsettings_contacts);
g_object_unref (self->priv->individual_manager);
- g_object_unref (self->priv->menubuttonmodel);
+ g_object_unref (self->priv->menumodel);
g_object_unref (self->priv->rooms_section);
G_OBJECT_CLASS (empathy_roster_window_parent_class)->finalize (window);
@@ -2071,9 +2071,6 @@ static void
empathy_roster_window_constructed (GObject *self)
{
G_OBJECT_CLASS (empathy_roster_window_parent_class)->constructed (self);
-
- gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (self),
- FALSE);
}
static void
@@ -2123,59 +2120,6 @@ contacts_loaded_cb (EmpathyIndividualManager *manager,
}
static void
-roster_window_menu_closed_cb (GtkWidget *button,
- GtkMenu *menu)
-{
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
-}
-
-static void
-roster_window_menu_position_func (GtkMenu *menu,
- int *x,
- int *y,
- gboolean *push_in,
- gpointer user_data)
-{
- GtkWidget *button = user_data;
- GtkAllocation allocation;
- int w = gtk_widget_get_allocated_width (GTK_WIDGET (menu));
-
- gtk_widget_get_allocation (button, &allocation);
- gdk_window_get_root_coords (gtk_widget_get_window (button),
- allocation.x + allocation.width - w,
- allocation.y + allocation.height,
- x, y);
-
- *push_in = TRUE;
-}
-
-static gboolean
-roster_window_menu_button_press_cb (GtkWidget *button,
- GdkEventButton *event,
- EmpathyRosterWindow *self)
-{
- if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
- {
- GtkWidget *menu = gtk_menu_new_from_model (
- G_MENU_MODEL (self->priv->menubuttonmodel));
-
- g_signal_connect (menu, "selection-done",
- G_CALLBACK (gtk_widget_destroy), NULL);
- gtk_menu_attach_to_widget (GTK_MENU (menu), button,
- roster_window_menu_closed_cb);
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
- roster_window_menu_position_func, button,
- event->button, event->time);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
empathy_roster_window_init (EmpathyRosterWindow *self)
{
GtkBuilder *gui;
@@ -2183,7 +2127,6 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
gchar *filename;
GtkTreeModel *model;
GtkWidget *search_vbox;
- GtkWidget *button;
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
EMPATHY_TYPE_ROSTER_WINDOW, EmpathyRosterWindowPriv);
@@ -2245,32 +2188,18 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
filename = empathy_file_lookup ("empathy-roster-window-menubar.ui", "src");
gui = empathy_builder_get_file (filename,
- "menubutton", &self->priv->menubuttonmodel,
+ "menubutton", &self->priv->menumodel,
"rooms", &self->priv->rooms_section,
NULL);
g_free (filename);
- g_object_ref (self->priv->menubuttonmodel);
+ g_object_ref (self->priv->menumodel);
g_object_ref (self->priv->rooms_section);
- /* Disable map if built without champlain */
-#ifndef HAVE_LIBCHAMPLAIN
- {
- GAction *view_show_map;
-
- view_show_map = g_action_map_lookup_action (G_ACTION_MAP (self),
- "view_show_map");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (view_show_map), FALSE);
- }
-#endif
-
/* Set up connection related actions. */
roster_window_connection_items_setup (self);
roster_window_favorite_chatroom_menu_setup (self);
- /* FIXME: display accelerators in menu */
- /* FIXME: make menu appear on <Alt> */
-
g_object_unref (gui);
/* Set up contact list. */
@@ -2294,20 +2223,6 @@ empathy_roster_window_init (EmpathyRosterWindow *self)
self->priv->throbber,
FALSE, TRUE, 0);
- /* Set up the menu */
-
- button = gtk_toggle_button_new ();
- gtk_button_set_image (GTK_BUTTON (button),
- gtk_image_new_from_icon_name ("user-available-symbolic",
- GTK_ICON_SIZE_SMALL_TOOLBAR));
- gtk_widget_show (button);
- gtk_box_pack_start (GTK_BOX (self->priv->presence_toolbar),
- button,
- FALSE, TRUE, 0);
-
- g_signal_connect (button, "button-press-event",
- G_CALLBACK (roster_window_menu_button_press_cb), self);
-
/* XXX: this class is designed to live for the duration of the program,
* so it's got a race condition between its signal handlers and its
* finalization. The class is planned to be removed, so we won't fix
@@ -2429,3 +2344,11 @@ empathy_roster_window_new (GtkApplication *app)
"application", app,
NULL);
}
+
+GMenuModel *
+empathy_roster_window_get_menu_model (EmpathyRosterWindow *self)
+{
+ g_return_val_if_fail (EMPATHY_IS_ROSTER_WINDOW (self), NULL);
+
+ return G_MENU_MODEL (self->priv->menumodel);
+}
diff --git a/src/empathy-roster-window.h b/src/empathy-roster-window.h
index 82fedb7..4620a99 100644
--- a/src/empathy-roster-window.h
+++ b/src/empathy-roster-window.h
@@ -60,6 +60,8 @@ void empathy_roster_window_show_preferences (EmpathyRosterWindow *self,
void empathy_roster_window_set_shell_running (EmpathyRosterWindow *self,
gboolean shell_running);
+GMenuModel *empathy_roster_window_get_menu_model (EmpathyRosterWindow *self);
+
G_END_DECLS
#endif /* __EMPATHY_ROSTER_WINDOW_H__ */
diff --git a/src/empathy.c b/src/empathy.c
index 774365b..9ba9236 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -332,9 +332,6 @@ empathy_app_command_line (GApplication *app,
{
GError *error = NULL;
TpDBusDaemon *dbus;
- GtkBuilder *gui;
- GMenuModel *menu;
- char *filename;
/* Create the FT factory */
self->ft_factory = empathy_ft_factory_dup_singleton ();
@@ -352,20 +349,11 @@ empathy_app_command_line (GApplication *app,
self->activated = TRUE;
- /* set up the app menu */
- filename = empathy_file_lookup (
- "empathy-roster-window-menubar.ui", "src");
- gui = empathy_builder_get_file (filename,
- "menubutton", &menu,
- NULL);
-
- gtk_application_set_app_menu (GTK_APPLICATION (self), menu);
-
- g_free (filename);
- g_object_unref (gui);
-
/* Setting up UI */
self->window = empathy_roster_window_new (GTK_APPLICATION (app));
+ gtk_application_set_app_menu (GTK_APPLICATION (self),
+ empathy_roster_window_get_menu_model (
+ EMPATHY_ROSTER_WINDOW (self->window)));
gtk_application_add_window (GTK_APPLICATION (app),
GTK_WINDOW (self->window));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]