pidgin/pidgin

Parents 9389ba16cf40
Children 23985cfb6b99
Merge PidginBuddyListMenu with PidginContactList which fixes all of the accelerators as well.

Testing Done:
Compiled and ran locally. Verified that the `g_warnings` at startup are now gone and that the keyboard accelerators now work again.

Reviewed at https://reviews.imfreedom.org/r/430/
--- a/doc/reference/pidgin/pidgin-docs.xml Sun Jan 24 02:46:43 2021 -0600
+++ b/doc/reference/pidgin/pidgin-docs.xml Sun Jan 24 03:27:43 2021 -0600
@@ -59,10 +59,10 @@
<xi:include href="xml/pidginactiongroup.xml" />
<xi:include href="xml/pidginapplication.xml" />
<xi:include href="xml/pidginattachment.xml" />
- <xi:include href="xml/pidginbuddylistmenu.xml" />
<xi:include href="xml/pidgincellrendererexpander.xml" />
<xi:include href="xml/pidginclosebutton.xml" />
<xi:include href="xml/pidgincontactcompletion.xml" />
+ <xi:include href="xml/pidgincontactlist.xml" />
<xi:include href="xml/pidginconversationwindow.xml" />
<xi:include href="xml/pidgincore.xml" />
<xi:include href="xml/pidgindebug.xml" />
--- a/pidgin/glade/pidgin3.xml.in Sun Jan 24 02:46:43 2021 -0600
+++ b/pidgin/glade/pidgin3.xml.in Sun Jan 24 03:27:43 2021 -0600
@@ -6,7 +6,6 @@
<glade-widget-class name="PidginAccountStore" generic-name="account_store" title="AccountStore"/>
<glade-widget-class name="PidginAccountFilterConnected" generic-name="account_filter_connected" title="FilterConnected"/>
<glade-widget-class name="PidginAccountFilterProtocol" generic-name="account_filter_protocol" title="FilterProtocol"/>
- <glade-widget-class name="PidginBuddyListMenu" generic-name="buddy_list_menu" title="BuddyListMenu"/>
<glade-widget-class name="PidginCloseButton" generic-name="close-button" title="CloseButton"/>
<glade-widget-class name="PidginConversationWindow" generic-name="conversation_window" title="ConversationWindow"/>
<glade-widget-class name="PidginDialog" generic-name="dialog" title="Dialog"/>
@@ -24,7 +23,6 @@
<glade-widget-class-ref name="PidginAccountStore"/>
<glade-widget-class-ref name="PidginAccountFilterConnected"/>
<glade-widget-class-ref name="PidginAccountFilterProtocol"/>
- <glade-widget-class-ref name="PidginBuddyListMenu"/>
<glade-widget-class-ref name="PidginCloseButton"/>
<glade-widget-class-ref name="PidginConversationWindow"/>
<glade-widget-class-ref name="PidginDialog"/>
--- a/pidgin/gtkblist.c Sun Jan 24 02:46:43 2021 -0600
+++ b/pidgin/gtkblist.c Sun Jan 24 03:27:43 2021 -0600
@@ -44,7 +44,6 @@
#include "pidgin/pidginaccountfilterconnected.h"
#include "pidgin/pidginaccountstore.h"
#include "pidgin/pidginactiongroup.h"
-#include "pidgin/pidginbuddylistmenu.h"
#include "pidgin/pidgincellrendererexpander.h"
#include "pidgin/pidginclosebutton.h"
#include "pidgin/pidgincontactlist.h"
@@ -5231,11 +5230,7 @@
gtk_widget_add_events(gtkblist->window, GDK_VISIBILITY_NOTIFY_MASK);
/******************************* Menu bar *************************************/
- gtkblist->menu = pidgin_buddy_list_menu_new();
- gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), gtkblist->menu, FALSE,
- FALSE, 0);
-
- gtkblist->menutray = pidgin_buddy_list_menu_get_menu_tray(PIDGIN_BUDDY_LIST_MENU(gtkblist->menu));
+ gtkblist->menutray = pidgin_contact_list_get_menu_tray(PIDGIN_CONTACT_LIST(gtkblist->window));
/****************************** Notebook *************************************/
gtkblist->notebook = gtk_notebook_new();
@@ -7303,10 +7298,10 @@
}
/* replace the old submenu with a new one */
- if(PIDGIN_IS_BUDDY_LIST_MENU(gtkblist->menu)) {
+ if(PIDGIN_IS_CONTACT_LIST(gtkblist->window)) {
GtkWidget *item = NULL;
- item = pidgin_buddy_list_menu_get_sort_item(PIDGIN_BUDDY_LIST_MENU(gtkblist->menu));
+ item = pidgin_contact_list_get_menu_sort_item(PIDGIN_CONTACT_LIST(gtkblist->window));
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item),
gtk_menu_new_from_model(G_MENU_MODEL(menu)));
g_object_unref(G_OBJECT(menu));
--- a/pidgin/meson.build Sun Jan 24 02:46:43 2021 -0600
+++ b/pidgin/meson.build Sun Jan 24 03:27:43 2021 -0600
@@ -39,7 +39,6 @@
'pidginactiongroup.c',
'pidginapplication.c',
'pidginattachment.c',
- 'pidginbuddylistmenu.c',
'pidgincellrendererexpander.c',
'pidginclosebutton.c',
'pidgincontactcompletion.c',
@@ -107,7 +106,6 @@
'pidginactiongroup.h',
'pidginapplication.h',
'pidginattachment.h',
- 'pidginbuddylistmenu.h',
'pidgincellrendererexpander.h',
'pidginclosebutton.h',
'pidgincontactcompletion.h',
--- a/pidgin/pidginbuddylistmenu.c Sun Jan 24 02:46:43 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * 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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include "pidginbuddylistmenu.h"
-
-struct _PidginBuddyListMenu {
- GtkMenuBar parent;
-
- GtkWidget *sort_buddies;
-
- GtkWidget *accounts;
- GtkWidget *accounts_menu;
-
- GtkWidget *plugins;
- GtkWidget *plugins_menu;
-
- GtkWidget *menu_tray;
-};
-
-/******************************************************************************
- * GObject Implementation
- *****************************************************************************/
-G_DEFINE_TYPE(PidginBuddyListMenu, pidgin_buddy_list_menu, GTK_TYPE_MENU_BAR)
-
-static void
-pidgin_buddy_list_menu_init(PidginBuddyListMenu *menu) {
- gtk_widget_init_template(GTK_WIDGET(menu));
-
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->accounts),
- menu->accounts_menu);
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->plugins),
- menu->plugins_menu);
-
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu->menu_tray);
-}
-
-static void
-pidgin_buddy_list_menu_class_init(PidginBuddyListMenuClass *klass) {
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
-
- gtk_widget_class_set_template_from_resource(
- widget_class,
- "/im/pidgin/Pidgin/BuddyList/menu.ui"
- );
-
- gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
- sort_buddies);
- gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
- accounts);
- gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
- accounts_menu);
- gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
- plugins);
- gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
- plugins_menu);
- gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
- menu_tray);
-}
-
-/******************************************************************************
- * Public API
- *****************************************************************************/
-GtkWidget *
-pidgin_buddy_list_menu_new(void) {
- return GTK_WIDGET(g_object_new(PIDGIN_TYPE_BUDDY_LIST_MENU, NULL));
-}
-
-GtkWidget *
-pidgin_buddy_list_menu_get_sort_item(PidginBuddyListMenu *menu) {
- g_return_val_if_fail(PIDGIN_IS_BUDDY_LIST_MENU(menu), NULL);
-
- return menu->sort_buddies;
-}
-
-GtkWidget *
-pidgin_buddy_list_menu_get_menu_tray(PidginBuddyListMenu *menu) {
- g_return_val_if_fail(PIDGIN_IS_BUDDY_LIST_MENU(menu), NULL);
-
- return menu->menu_tray;
-}
--- a/pidgin/pidginbuddylistmenu.h Sun Jan 24 02:46:43 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * 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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
-# error "only <pidgin.h> may be included directly"
-#endif
-
-#ifndef PIDGIN_BUDDY_LIST_MENU_H
-#define PIDGIN_BUDDY_LIST_MENU_H
-
-/**
- * SECTION:pidginbuddylistmenu
- * @section_id: pidgin-buddylist-menu
- * @short_description: A widget to display the menubar in the buddy list window.
- * @title: Buddylist Menu
- *
- * #PidginBuddyListMenu is a transitional widget as we slowly migrate the
- * buddylist window to glade.
- */
-
-#include <glib.h>
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PIDGIN_TYPE_BUDDY_LIST_MENU (pidgin_buddy_list_menu_get_type())
-G_DECLARE_FINAL_TYPE(PidginBuddyListMenu, pidgin_buddy_list_menu, PIDGIN,
- BUDDY_LIST_MENU, GtkMenuBar)
-
-/**
- * pidgin_buddy_list_menu_new:
- *
- * Creates a new #PidginBuddyListMenu instance.
- *
- * Returns: (transfer full): The new #PidginBuddyListMenu instance.
- */
-GtkWidget *pidgin_buddy_list_menu_new(void);
-
-/**
- * pidgin_buddy_list_menu_get_sort_item:
- * @menu: The #PidginBuddyList instance.
- *
- * Returns the sort menu item from the buddies menu.
- *
- * Returns: (transfer none): The sort menu item from the buddies menu.
- */
-GtkWidget *pidgin_buddy_list_menu_get_sort_item(PidginBuddyListMenu *menu);
-
-/**
- * pidgin_buddy_list_menu_get_menu_tray:
- * @menu: The #PidginBuddyList instance.
- *
- * Gets the #PidginMenuTray instance from @menu.
- *
- * Returns: (transfer none): The #PidginMenuTray from @menu.
- */
-GtkWidget *pidgin_buddy_list_menu_get_menu_tray(PidginBuddyListMenu *menu);
-
-G_END_DECLS
-
-#endif /* PIDGIN_BUDDY_LIST_MENU_H */
--- a/pidgin/pidgincontactlist.c Sun Jan 24 02:46:43 2021 -0600
+++ b/pidgin/pidgincontactlist.c Sun Jan 24 03:27:43 2021 -0600
@@ -28,6 +28,17 @@
GtkApplicationWindow parent;
GtkWidget *vbox;
+
+ GtkWidget *menu_bar;
+ GtkWidget *sort_buddies;
+
+ GtkWidget *accounts;
+ GtkWidget *accounts_menu;
+
+ GtkWidget *plugins;
+ GtkWidget *plugins_menu;
+
+ GtkWidget *menu_tray;
};
G_DEFINE_TYPE(PidginContactList, pidgin_contact_list,
@@ -48,6 +59,14 @@
group = pidgin_action_group_new();
gtk_widget_insert_action_group(GTK_WIDGET(contact_list), "blist",
G_ACTION_GROUP(group));
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(contact_list->accounts),
+ contact_list->accounts_menu);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(contact_list->plugins),
+ contact_list->plugins_menu);
+
+ gtk_menu_shell_append(GTK_MENU_SHELL(contact_list->menu_bar),
+ contact_list->menu_tray);
}
static void
@@ -60,6 +79,21 @@
);
gtk_widget_class_bind_template_child(widget_class, PidginContactList, vbox);
+
+ gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+ menu_bar);
+ gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+ sort_buddies);
+ gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+ accounts);
+ gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+ accounts_menu);
+ gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+ plugins);
+ gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+ plugins_menu);
+ gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+ menu_tray);
}
/******************************************************************************
@@ -76,3 +110,17 @@
return contact_list->vbox;
}
+
+GtkWidget *
+pidgin_contact_list_get_menu_sort_item(PidginContactList *contact_list) {
+ g_return_val_if_fail(PIDGIN_IS_CONTACT_LIST(contact_list), NULL);
+
+ return contact_list->sort_buddies;
+}
+
+GtkWidget *
+pidgin_contact_list_get_menu_tray(PidginContactList *contact_list) {
+ g_return_val_if_fail(PIDGIN_IS_CONTACT_LIST(contact_list), NULL);
+
+ return contact_list->menu_tray;
+}
--- a/pidgin/pidgincontactlist.h Sun Jan 24 02:46:43 2021 -0600
+++ b/pidgin/pidgincontactlist.h Sun Jan 24 03:27:43 2021 -0600
@@ -43,6 +43,22 @@
G_BEGIN_DECLS
+/**
+ * PIDGIN_TYPE_CONTACT_LIST:
+ *
+ * The standard _get_type method for #PidginContactList.
+ *
+ * Since: 3.0.0
+ */
+
+/**
+ * PidginContactList:
+ *
+ * A #GtkWindow that contains the main contact list.
+ *
+ * Since: 3.0.0
+ */
+
#define PIDGIN_TYPE_CONTACT_LIST (pidgin_contact_list_get_type())
G_DECLARE_FINAL_TYPE(PidginContactList, pidgin_contact_list, PIDGIN,
CONTACT_LIST, GtkApplicationWindow)
@@ -53,6 +69,8 @@
* Creates a new #PidginContactList instance.
*
* Returns: (transfer full): The new #PidginContactList instance.
+ *
+ * Since: 3.0.0
*/
GtkWidget *pidgin_contact_list_new(void);
@@ -63,9 +81,35 @@
* Gets the main vbox for @contact_list.
*
* Returns: (transfer none): The main vbox of @contact_list.
+ *
+ * Since: 3.0.0
*/
GtkWidget *pidgin_contact_list_get_vbox(PidginContactList *contact_list);
+/**
+ * pidgin_contact_list_get_menu_sort_item:
+ * @contact_list: The #PidginContactList instance.
+ *
+ * Returns the sort menu item from the menu of @contact_list.
+ *
+ * Returns: (transfer none): The sort menu item from the menu of @contact_list.
+ *
+ * Since: 3.0.0
+ */
+GtkWidget *pidgin_contact_list_get_menu_sort_item(PidginContactList *contact_list);
+
+/**
+ * pidgin_contact_list_get_menu_tray:
+ * @contact_list: The #PidginContactList instance.
+ *
+ * Gets the #PidginMenuTray instance from the menu of @contact_list.
+ *
+ * Returns: (transfer none): The #PidginMenuTray from the menu of
+ * @contact_list.
+ *
+ * Since: 3.0.0
+ */
+GtkWidget *pidgin_contact_list_get_menu_tray(PidginContactList *contact_list);
G_END_DECLS
--- a/pidgin/resources/BuddyList/menu.ui Sun Jan 24 02:46:43 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.2
-
-Pidgin - Internet Messenger
-Copyright (C) Pidgin Developers <devel@pidgin.im>
-
-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 the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, see <https://www.gnu.org/licenses/>.
-
--->
-<interface>
- <requires lib="gtk+" version="3.20"/>
- <requires lib="pidgin" version="3.0"/>
- <!-- interface-license-type gplv2 -->
- <!-- interface-name Pidgin -->
- <!-- interface-description Internet Messenger -->
- <!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
- <template class="PidginBuddyListMenu" parent="GtkMenuBar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Buddies</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="new_message">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.new-message</property>
- <property name="label" translatable="yes">New Instant _Message...</property>
- <property name="use_underline">True</property>
- <accelerator key="m" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="join_chat">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.join-chat</property>
- <property name="label" translatable="yes">Join a _Chat...</property>
- <property name="use_underline">True</property>
- <accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="get_user_info">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.get-user-info</property>
- <property name="label" translatable="yes">Get User _Info...</property>
- <property name="use_underline">True</property>
- <accelerator key="i" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="view_user_log">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.view-user-log</property>
- <property name="label" translatable="yes">View User _Log...</property>
- <property name="use_underline">True</property>
- <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Sh_ow</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkCheckMenuItem" id="show_offline_buddies">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">blist.show-offline-buddies</property>
- <property name="label" translatable="yes">_Offline Buddies</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkCheckMenuItem" id="show_empty_groups">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">blist.show-empty-groups</property>
- <property name="label" translatable="yes">_Empty Groups</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkCheckMenuItem" id="show_buddy_icons">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">blist.show-buddy-icons</property>
- <property name="label" translatable="yes">Buddy _Icons</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkCheckMenuItem" id="show_idle_times">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">blist.show-idle-times</property>
- <property name="label" translatable="yes">Idle _Times</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkCheckMenuItem" id="show_protocol_icons">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">blist.show-protocol-icons</property>
- <property name="label" translatable="yes">_Protocol Icons</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="sort_buddies">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Sort Buddies</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="add_buddy">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.add-buddy</property>
- <property name="label" translatable="yes">_Add Buddy...</property>
- <property name="use_underline">True</property>
- <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="add_chat">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.add-chat</property>
- <property name="label" translatable="yes">Add C_hat...</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="add_group">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.add-group</property>
- <property name="label" translatable="yes">Add _Group...</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="quit">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.quit</property>
- <property name="label" translatable="yes">_Quit</property>
- <property name="use_underline">True</property>
- <accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="accounts">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Accounts</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Tools</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="custom_smileys">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.custom-smiley</property>
- <property name="label" translatable="yes">Custom Smile_ys</property>
- <property name="use_underline">True</property>
- <accelerator key="y" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="preferences">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.preferences</property>
- <property name="label" translatable="yes">Pr_eferences</property>
- <property name="use_underline">True</property>
- <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="privacy">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.privacy</property>
- <property name="label" translatable="yes">Pr_ivacy</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="set_mood">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.set-mood</property>
- <property name="label" translatable="yes">Set _Mood</property>
- <property name="use_underline">True</property>
- <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="file_transfers">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.file-transfers</property>
- <property name="label" translatable="yes">_File Transfers</property>
- <property name="use_underline">True</property>
- <accelerator key="t" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="room_list">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.room-list</property>
- <property name="label" translatable="yes">R_oom List</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="system_log">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.system-log</property>
- <property name="label" translatable="yes">System _Log</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="plugins">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Plugins</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Help</property>
- <property name="use_underline">True</property>
- <child type="submenu">
- <object class="GtkMenu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkMenuItem" id="online_help">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.online-help</property>
- <property name="label" translatable="yes">Online _Help</property>
- <property name="use_underline">True</property>
- <accelerator key="F1" signal="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="debug">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.debug</property>
- <property name="label" translatable="yes">_Debug Window</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="about">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action_name">app.about</property>
- <property name="label" translatable="yes">_About</property>
- <property name="use_underline">True</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </template>
- <object class="PidginAccountsMenu" id="accounts_menu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <object class="PidginMenuTray" id="menu_tray">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="right_justified">True</property>
- </object>
- <object class="PidginPluginsMenu" id="plugins_menu">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
-</interface>
--- a/pidgin/resources/BuddyList/window.ui Sun Jan 24 02:46:43 2021 -0600
+++ b/pidgin/resources/BuddyList/window.ui Sun Jan 24 03:27:43 2021 -0600
@@ -38,15 +38,347 @@
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
+ <object class="GtkMenuBar" id="menu_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Buddies</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="new_message">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.new-message</property>
+ <property name="label" translatable="yes">New Instant _Message...</property>
+ <property name="use_underline">True</property>
+ <accelerator key="m" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="join_chat">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.join-chat</property>
+ <property name="label" translatable="yes">Join a _Chat...</property>
+ <property name="use_underline">True</property>
+ <accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="get_user_info">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.get-user-info</property>
+ <property name="label" translatable="yes">Get User _Info...</property>
+ <property name="use_underline">True</property>
+ <accelerator key="i" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="view_user_log">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.view-user-log</property>
+ <property name="label" translatable="yes">View User _Log...</property>
+ <property name="use_underline">True</property>
+ <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Sh_ow</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckMenuItem" id="show_offline_buddies">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">blist.show-offline-buddies</property>
+ <property name="label" translatable="yes">_Offline Buddies</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="show_empty_groups">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">blist.show-empty-groups</property>
+ <property name="label" translatable="yes">_Empty Groups</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="show_buddy_icons">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">blist.show-buddy-icons</property>
+ <property name="label" translatable="yes">Buddy _Icons</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="show_idle_times">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">blist.show-idle-times</property>
+ <property name="label" translatable="yes">Idle _Times</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="show_protocol_icons">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">blist.show-protocol-icons</property>
+ <property name="label" translatable="yes">_Protocol Icons</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="sort_buddies">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Sort Buddies</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="add_buddy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.add-buddy</property>
+ <property name="label" translatable="yes">_Add Buddy...</property>
+ <property name="use_underline">True</property>
+ <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="add_chat">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.add-chat</property>
+ <property name="label" translatable="yes">Add C_hat...</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="add_group">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.add-group</property>
+ <property name="label" translatable="yes">Add _Group...</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="quit">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.quit</property>
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="use_underline">True</property>
+ <accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="accounts">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Accounts</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Tools</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="custom_smileys">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.custom-smiley</property>
+ <property name="label" translatable="yes">Custom Smile_ys</property>
+ <property name="use_underline">True</property>
+ <accelerator key="y" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="preferences">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.preferences</property>
+ <property name="label" translatable="yes">Pr_eferences</property>
+ <property name="use_underline">True</property>
+ <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="privacy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.privacy</property>
+ <property name="label" translatable="yes">Pr_ivacy</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="set_mood">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.set-mood</property>
+ <property name="label" translatable="yes">Set _Mood</property>
+ <property name="use_underline">True</property>
+ <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="file_transfers">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.file-transfers</property>
+ <property name="label" translatable="yes">_File Transfers</property>
+ <property name="use_underline">True</property>
+ <accelerator key="t" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="room_list">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.room-list</property>
+ <property name="label" translatable="yes">R_oom List</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="system_log">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.system-log</property>
+ <property name="label" translatable="yes">System _Log</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="plugins">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Plugins</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="online_help">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.online-help</property>
+ <property name="label" translatable="yes">Online _Help</property>
+ <property name="use_underline">True</property>
+ <accelerator key="F1" signal="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="debug">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.debug</property>
+ <property name="label" translatable="yes">_Debug Window</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="about">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action_name">app.about</property>
+ <property name="label" translatable="yes">_About</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
</child>
</object>
</child>
</template>
+ <object class="PidginAccountsMenu" id="accounts_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <object class="PidginMenuTray" id="menu_tray">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="right_justified">True</property>
+ </object>
+ <object class="PidginPluginsMenu" id="plugins_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
</interface>
--- a/pidgin/resources/pidgin.gresource.xml Sun Jan 24 02:46:43 2021 -0600
+++ b/pidgin/resources/pidgin.gresource.xml Sun Jan 24 03:27:43 2021 -0600
@@ -9,7 +9,6 @@
<file compressed="true">Accounts/chooser.ui</file>
<file compressed="true">Accounts/entry.css</file>
<file compressed="true">Accounts/menu.ui</file>
- <file compressed="true">BuddyList/menu.ui</file>
<file compressed="true">BuddyList/window.ui</file>
<file compressed="true">Conversations/invite_dialog.ui</file>
<file compressed="true">Conversations/menu.ui</file>