summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-05-18 13:13:48 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-05-18 13:13:48 +0000
commit9d16715eb33600934a4e7b328e54f75f4bdd605f (patch)
tree54199a1c4c4c8daa2998830d867e5e7212294768
parent63267a2f70033dd7750136781b854ad1e630b472 (diff)
parent83d9e7a1c3e88072e09bc12ff9289dda2168753d (diff)
downloadgtk+-9d16715eb33600934a4e7b328e54f75f4bdd605f.tar.gz
Merge branch 'menubutton-no-button' into 'master'
Menubutton: don't derive from GtkButton See merge request GNOME/gtk!853
-rw-r--r--demos/widget-factory/widget-factory.ui6
-rw-r--r--docs/reference/gtk/gtk4-sections.txt4
-rw-r--r--gtk/a11y/gtkmenubuttonaccessible.c4
-rw-r--r--gtk/a11y/gtkmenubuttonaccessible.h6
-rw-r--r--gtk/gtkmenubutton.c209
-rw-r--r--gtk/gtkmenubutton.h16
-rw-r--r--gtk/gtkshortcutswindow.c21
-rw-r--r--gtk/inspector/misc-info.c2
-rw-r--r--gtk/ui/gtkfilechooserwidget.ui1
-rw-r--r--gtk/ui/gtkplacesview.ui6
-rw-r--r--testsuite/a11y/menubutton.txt6
-rw-r--r--testsuite/a11y/menubutton2.txt6
-rw-r--r--testsuite/a11y/menubutton3.txt6
-rw-r--r--testsuite/gtk/builder.c31
14 files changed, 203 insertions, 121 deletions
diff --git a/demos/widget-factory/widget-factory.ui b/demos/widget-factory/widget-factory.ui
index cb152b38a8..1085b49201 100644
--- a/demos/widget-factory/widget-factory.ui
+++ b/demos/widget-factory/widget-factory.ui
@@ -2888,8 +2888,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="valign">center</property>
<property name="popover">notebook_info_popover2</property>
<property name="icon-name">emblem-important-symbolic</property>
- <property name="relief">none</property>
<style>
+ <class name="flat"/>
<class name="circular"/>
</style>
</object>
@@ -3032,8 +3032,8 @@ microphone-sensitivity-medium-symbolic</property>
<property name="valign">center</property>
<property name="popover">notebook_info_popover</property>
<property name="icon-name">emblem-important-symbolic</property>
- <property name="relief">none</property>
<style>
+ <class name="flat"/>
<class name="circular"/>
</style>
</object>
@@ -3518,8 +3518,8 @@ bad things might happen.</property>
<property name="valign">center</property>
<property name="popover">notebook_info_popover3</property>
<property name="icon-name">emblem-important-symbolic</property>
- <property name="relief">none</property>
<style>
+ <class name="flat"/>
<class name="circular"/>
</style>
</object>
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index 64a14c44fa..93cfc5fc20 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -1850,6 +1850,10 @@ gtk_menu_button_set_direction
gtk_menu_button_get_direction
gtk_menu_button_set_align_widget
gtk_menu_button_get_align_widget
+gtk_menu_button_set_icon_name
+gtk_menu_button_get_icon_name
+gtk_menu_button_set_label
+gtk_menu_button_get_label
<SUBSECTION Standard>
GTK_TYPE_MENU_BUTTON
GTK_MENU_BUTTON
diff --git a/gtk/a11y/gtkmenubuttonaccessible.c b/gtk/a11y/gtkmenubuttonaccessible.c
index d4a9162b60..9a4c480d19 100644
--- a/gtk/a11y/gtkmenubuttonaccessible.c
+++ b/gtk/a11y/gtkmenubuttonaccessible.c
@@ -22,13 +22,15 @@
#include "gtkmenubuttonaccessible.h"
-G_DEFINE_TYPE (GtkMenuButtonAccessible, gtk_menu_button_accessible, GTK_TYPE_TOGGLE_BUTTON_ACCESSIBLE)
+G_DEFINE_TYPE (GtkMenuButtonAccessible, gtk_menu_button_accessible, GTK_TYPE_WIDGET_ACCESSIBLE)
static void
gtk_menu_button_accessible_initialize (AtkObject *accessible,
gpointer data)
{
ATK_OBJECT_CLASS (gtk_menu_button_accessible_parent_class)->initialize (accessible, data);
+
+ accessible->role = ATK_ROLE_TOGGLE_BUTTON;
}
static gint
diff --git a/gtk/a11y/gtkmenubuttonaccessible.h b/gtk/a11y/gtkmenubuttonaccessible.h
index 059f209fc9..17168a2eb7 100644
--- a/gtk/a11y/gtkmenubuttonaccessible.h
+++ b/gtk/a11y/gtkmenubuttonaccessible.h
@@ -22,7 +22,7 @@
#error "Only <gtk/gtk-a11y.h> can be included directly."
#endif
-#include <gtk/a11y/gtktogglebuttonaccessible.h>
+#include <gtk/a11y/gtkwidgetaccessible.h>
G_BEGIN_DECLS
@@ -39,14 +39,14 @@ typedef struct _GtkMenuButtonAccessiblePrivate GtkMenuButtonAccessiblePrivate;
struct _GtkMenuButtonAccessible
{
- GtkToggleButtonAccessible parent;
+ GtkWidgetAccessible parent;
GtkMenuButtonAccessiblePrivate *priv;
};
struct _GtkMenuButtonAccessibleClass
{
- GtkToggleButtonAccessibleClass parent_class;
+ GtkWidgetAccessibleClass parent_class;
};
GDK_AVAILABLE_IN_ALL
diff --git a/gtk/gtkmenubutton.c b/gtk/gtkmenubutton.c
index 60b5a2b034..687a9c6850 100644
--- a/gtk/gtkmenubutton.c
+++ b/gtk/gtkmenubutton.c
@@ -27,9 +27,9 @@
* This popup can be provided either as a #GtkMenu, a #GtkPopover or an
* abstract #GMenuModel.
*
- * The #GtkMenuButton widget can hold any valid child widget. That is, it
- * can hold almost any other standard #GtkWidget. The most commonly used
- * child is #GtkImage. If no widget is explicitely added to the #GtkMenuButton,
+ * The #GtkMenuButton widget can show either an icon (set with the
+ * #GtkMenuButton:icon-name property) or a label (set with the
+ * #GtkMenuButton:label property). If neither is explicitly set,
* a #GtkImage is automatically created, using an arrow image oriented
* according to #GtkMenuButton:direction or the generic “open-menu-symbolic”
* icon if the direction is not set.
@@ -121,11 +121,14 @@
#include "gtkprivate.h"
#include "gtkstylecontext.h"
#include "gtktypebuiltins.h"
+#include "gtklabel.h"
+#include "gtkbox.h"
#include "a11y/gtkmenubuttonaccessible.h"
struct _GtkMenuButtonPrivate
{
+ GtkWidget *button;
GtkWidget *menu; /* The menu and the popover are mutually exclusive */
GtkWidget *popover; /* Only one at a time can be set */
GMenuModel *model;
@@ -136,7 +139,8 @@ struct _GtkMenuButtonPrivate
GtkWidget *align_widget;
GtkWidget *arrow_widget;
GtkArrowType arrow_type;
- gboolean use_popover;
+
+ guint use_popover : 1;
guint press_handled : 1;
};
@@ -149,12 +153,14 @@ enum
PROP_DIRECTION,
PROP_USE_POPOVER,
PROP_POPOVER,
+ PROP_ICON_NAME,
+ PROP_LABEL,
LAST_PROP
};
static GParamSpec *menu_button_props[LAST_PROP];
-G_DEFINE_TYPE_WITH_PRIVATE (GtkMenuButton, gtk_menu_button, GTK_TYPE_TOGGLE_BUTTON)
+G_DEFINE_TYPE_WITH_PRIVATE (GtkMenuButton, gtk_menu_button, GTK_TYPE_WIDGET)
static void gtk_menu_button_dispose (GObject *object);
@@ -186,6 +192,12 @@ gtk_menu_button_set_property (GObject *object,
case PROP_POPOVER:
gtk_menu_button_set_popover (self, g_value_get_object (value));
break;
+ case PROP_ICON_NAME:
+ gtk_menu_button_set_icon_name (self, g_value_get_string (value));
+ break;
+ case PROP_LABEL:
+ gtk_menu_button_set_label (self, g_value_get_string (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -219,6 +231,12 @@ gtk_menu_button_get_property (GObject *object,
case PROP_POPOVER:
g_value_set_object (value, priv->popover);
break;
+ case PROP_ICON_NAME:
+ g_value_set_string (value, gtk_menu_button_get_icon_name (GTK_MENU_BUTTON (object)));
+ break;
+ case PROP_LABEL:
+ g_value_set_string (value, gtk_menu_button_get_label (GTK_MENU_BUTTON (object)));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -402,11 +420,10 @@ popup_menu (GtkMenuButton *menu_button,
}
static void
-gtk_menu_button_toggled (GtkToggleButton *button)
+gtk_menu_button_toggled (GtkMenuButton *menu_button)
{
- GtkMenuButton *menu_button = GTK_MENU_BUTTON (button);
GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
- gboolean active = gtk_toggle_button_get_active (button);
+ gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->button));
if (priv->menu)
{
@@ -434,35 +451,39 @@ gtk_menu_button_toggled (GtkToggleButton *button)
else
gtk_popover_popdown (GTK_POPOVER (priv->popover));
}
-
- if (GTK_TOGGLE_BUTTON_CLASS (gtk_menu_button_parent_class)->toggled)
- GTK_TOGGLE_BUTTON_CLASS (gtk_menu_button_parent_class)->toggled (button);
}
static void
-gtk_menu_button_add (GtkContainer *container,
- GtkWidget *child)
+gtk_menu_button_measure (GtkWidget *widget,
+ GtkOrientation orientation,
+ int for_size,
+ int *minimum,
+ int *natural,
+ int *minimum_baseline,
+ int *natural_baseline)
{
- GtkMenuButton *button = GTK_MENU_BUTTON (container);
- GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (button);
-
- if (priv->arrow_widget)
- gtk_container_remove (container, priv->arrow_widget);
+ GtkMenuButton *menu_button = GTK_MENU_BUTTON (widget);
+ GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
- GTK_CONTAINER_CLASS (gtk_menu_button_parent_class)->add (container, child);
+ gtk_widget_measure (priv->button,
+ orientation,
+ for_size,
+ minimum, natural,
+ minimum_baseline, natural_baseline);
}
static void
-gtk_menu_button_remove (GtkContainer *container,
- GtkWidget *child)
+gtk_menu_button_size_allocate (GtkWidget *widget,
+ int width,
+ int height,
+ int baseline)
{
- GtkMenuButton *button = GTK_MENU_BUTTON (container);
- GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (button);
-
- if (child == priv->arrow_widget)
- priv->arrow_widget = NULL;
+ GtkMenuButton *menu_button = GTK_MENU_BUTTON (widget);
+ GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
- GTK_CONTAINER_CLASS (gtk_menu_button_parent_class)->remove (container, child);
+ gtk_widget_size_allocate (priv->button,
+ &(GtkAllocation) { 0, 0, width, height },
+ baseline);
}
static void
@@ -470,19 +491,14 @@ gtk_menu_button_class_init (GtkMenuButtonClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
- GtkToggleButtonClass *toggle_button_class = GTK_TOGGLE_BUTTON_CLASS (klass);
gobject_class->set_property = gtk_menu_button_set_property;
gobject_class->get_property = gtk_menu_button_get_property;
gobject_class->dispose = gtk_menu_button_dispose;
widget_class->state_flags_changed = gtk_menu_button_state_flags_changed;
-
- container_class->add = gtk_menu_button_add;
- container_class->remove = gtk_menu_button_remove;
-
- toggle_button_class->toggled = gtk_menu_button_toggled;
+ widget_class->measure = gtk_menu_button_measure;
+ widget_class->size_allocate = gtk_menu_button_size_allocate;
/**
* GtkMenuButton:popup:
@@ -564,10 +580,24 @@ gtk_menu_button_class_init (GtkMenuButtonClass *klass)
GTK_TYPE_POPOVER,
G_PARAM_READWRITE);
+ menu_button_props[PROP_ICON_NAME] =
+ g_param_spec_string ("icon-name",
+ P_("Icon Name"),
+ P_("The name of the icon used to automatically populate the button"),
+ NULL,
+ GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
+
+ menu_button_props[PROP_LABEL] =
+ g_param_spec_string ("label",
+ P_("Label"),
+ P_("The label for the button"),
+ NULL,
+ GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
+
g_object_class_install_properties (gobject_class, LAST_PROP, menu_button_props);
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_MENU_BUTTON_ACCESSIBLE);
- gtk_widget_class_set_css_name (widget_class, I_("button"));
+ gtk_widget_class_set_css_name (widget_class, I_("menubutton"));
}
static void
@@ -604,7 +634,7 @@ add_arrow (GtkMenuButton *menu_button)
arrow = gtk_image_new ();
set_arrow_type (GTK_IMAGE (arrow), priv->arrow_type);
- gtk_container_add (GTK_CONTAINER (menu_button), arrow);
+ gtk_container_add (GTK_CONTAINER (priv->button), arrow);
priv->arrow_widget = arrow;
}
@@ -614,9 +644,14 @@ gtk_menu_button_init (GtkMenuButton *menu_button)
GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
GtkStyleContext *context;
+ gtk_widget_set_has_surface (GTK_WIDGET (menu_button), FALSE);
+
priv->arrow_type = GTK_ARROW_DOWN;
priv->use_popover = TRUE;
+ priv->button = gtk_toggle_button_new ();
+ gtk_widget_set_parent (priv->button, GTK_WIDGET (menu_button));
+ g_signal_connect_swapped (priv->button, "toggled", G_CALLBACK (gtk_menu_button_toggled), menu_button);
add_arrow (menu_button);
gtk_widget_set_sensitive (GTK_WIDGET (menu_button), FALSE);
@@ -648,7 +683,9 @@ gtk_menu_button_new (void)
static gboolean
menu_deactivate_cb (GtkMenuButton *menu_button)
{
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (menu_button), FALSE);
+ GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->button), FALSE);
return TRUE;
}
@@ -669,9 +706,6 @@ update_sensitivity (GtkMenuButton *menu_button)
{
GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
- if (gtk_actionable_get_action_name (GTK_ACTIONABLE (menu_button)) != NULL)
- return;
-
gtk_widget_set_sensitive (GTK_WIDGET (menu_button),
priv->menu != NULL || priv->popover != NULL);
}
@@ -990,7 +1024,7 @@ gtk_menu_button_set_direction (GtkMenuButton *menu_button,
g_object_notify_by_pspec (G_OBJECT (menu_button), menu_button_props[PROP_DIRECTION]);
/* Is it custom content? We don't change that */
- child = gtk_bin_get_child (GTK_BIN (menu_button));
+ child = gtk_bin_get_child (GTK_BIN (priv->button));
if (priv->arrow_widget != child)
return;
@@ -1045,6 +1079,7 @@ gtk_menu_button_dispose (GObject *object)
set_align_widget_pointer (GTK_MENU_BUTTON (object), NULL);
g_clear_object (&priv->model);
+ g_clear_pointer (&priv->button, gtk_widget_unparent);
G_OBJECT_CLASS (gtk_menu_button_parent_class)->dispose (object);
}
@@ -1182,3 +1217,95 @@ gtk_menu_button_get_popover (GtkMenuButton *menu_button)
return GTK_POPOVER (priv->popover);
}
+
+/**
+ * gtk_menu_button_set_icon_name:
+ * @menu_button: a #GtkMenuButton
+ * @icon_name: the icon name
+ *
+ * Sets the name of an icon to show inside the menu button.
+ */
+void
+gtk_menu_button_set_icon_name (GtkMenuButton *menu_button,
+ const char *icon_name)
+{
+ GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
+
+ g_return_if_fail (GTK_IS_MENU_BUTTON (menu_button));
+
+ gtk_button_set_icon_name (GTK_BUTTON (priv->button), icon_name);
+ g_object_notify_by_pspec (G_OBJECT (menu_button), menu_button_props[PROP_ICON_NAME]);
+}
+
+/**
+ * gtk_menu_button_get_icon_name:
+ * @menu_button: a #GtkMenuButton
+ *
+ * Gets the name of the icon shown in the button.
+ *
+ * Returns: the name of the icon shown in the button
+ */
+const char *
+gtk_menu_button_get_icon_name (GtkMenuButton *menu_button)
+{
+ GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
+
+ g_return_val_if_fail (GTK_IS_MENU_BUTTON (menu_button), NULL);
+
+ return gtk_button_get_icon_name (GTK_BUTTON (priv->button));
+}
+
+/**
+ * gtk_menu_button_set_label:
+ * @menu_button: a #GtkMenuButton
+ * @icon_name: the label
+ *
+ * Sets the label to show inside the menu button.
+ */
+void
+gtk_menu_button_set_label (GtkMenuButton *menu_button,
+ const char *label)
+{
+ GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
+ GtkWidget *child;
+ GtkWidget *box;
+
+ g_return_if_fail (GTK_IS_MENU_BUTTON (menu_button));
+
+ child = gtk_bin_get_child (GTK_BIN (priv->button));
+ if (child)
+ gtk_container_remove (GTK_CONTAINER (priv->button), child);
+
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_container_add (GTK_CONTAINER (box), gtk_label_new (label));
+ gtk_container_add (GTK_CONTAINER (box), gtk_image_new_from_icon_name ("pan-down-symbolic"));
+ gtk_container_add (GTK_CONTAINER (priv->button), box);
+
+ g_object_notify_by_pspec (G_OBJECT (menu_button), menu_button_props[PROP_LABEL]);
+}
+
+/**
+ * gtk_menu_button_get_label:
+ * @menu_button: a #GtkMenuButton
+ *
+ * Gets the label shown in the button
+ *
+ * Returns: the label shown in the button
+ */
+const char *
+gtk_menu_button_get_label (GtkMenuButton *menu_button)
+{
+ GtkMenuButtonPrivate *priv = gtk_menu_button_get_instance_private (menu_button);
+ GtkWidget *child;
+
+ g_return_val_if_fail (GTK_IS_MENU_BUTTON (menu_button), NULL);
+
+ child = gtk_bin_get_child (GTK_BIN (priv->button));
+ if (GTK_IS_BOX (child))
+ {
+ child = gtk_widget_get_first_child (child);
+ return gtk_label_get_label (GTK_LABEL (child));
+ }
+
+ return NULL;
+}
diff --git a/gtk/gtkmenubutton.h b/gtk/gtkmenubutton.h
index be019c30c3..d26d93f052 100644
--- a/gtk/gtkmenubutton.h
+++ b/gtk/gtkmenubutton.h
@@ -44,12 +44,12 @@ typedef struct _GtkMenuButtonPrivate GtkMenuButtonPrivate;
struct _GtkMenuButton
{
- GtkToggleButton parent_instance;
+ GtkWidget parent_instance;
};
struct _GtkMenuButtonClass
{
- GtkToggleButtonClass parent_class;
+ GtkWidgetClass parent_class;
/* Padding for future expansion */
void (*_gtk_reserved1) (void);
@@ -100,6 +100,18 @@ void gtk_menu_button_set_use_popover (GtkMenuButton *menu_button,
GDK_AVAILABLE_IN_ALL
gboolean gtk_menu_button_get_use_popover (GtkMenuButton *menu_button);
+GDK_AVAILABLE_IN_ALL
+void gtk_menu_button_set_icon_name (GtkMenuButton *menu_button,
+ const char *icon_name);
+GDK_AVAILABLE_IN_ALL
+const char * gtk_menu_button_get_icon_name (GtkMenuButton *menu_button);
+
+GDK_AVAILABLE_IN_ALL
+void gtk_menu_button_set_label (GtkMenuButton *menu_button,
+ const char *label);
+GDK_AVAILABLE_IN_ALL
+const char * gtk_menu_button_get_label (GtkMenuButton *menu_button);
+
G_END_DECLS
diff --git a/gtk/gtkshortcutswindow.c b/gtk/gtkshortcutswindow.c
index fac3f98677..db8f359a98 100644
--- a/gtk/gtkshortcutswindow.c
+++ b/gtk/gtkshortcutswindow.c
@@ -104,7 +104,6 @@ typedef struct
GtkStack *stack;
GtkStack *title_stack;
GtkMenuButton *menu_button;
- GtkLabel *menu_label;
GtkSearchBar *search_bar;
GtkSearchEntry *search_entry;
GtkHeaderBar *header_bar;
@@ -177,7 +176,7 @@ update_title_stack (GtkShortcutsWindow *self)
gtk_stack_set_visible_child_name (priv->title_stack, "sections");
g_object_get (visible_child, "title", &title, NULL);
- gtk_label_set_label (priv->menu_label, title);
+ gtk_menu_button_set_label (priv->menu_button, title);
g_free (title);
}
else
@@ -858,9 +857,7 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self)
{
GtkShortcutsWindowPrivate *priv = gtk_shortcuts_window_get_instance_private (self);
GtkWidget *search_button;
- GtkBox *menu_box;
GtkBox *box;
- GtkWidget *arrow;
GtkWidget *scroller;
GtkWidget *label;
GtkWidget *empty;
@@ -922,24 +919,10 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self)
priv->menu_button = g_object_new (GTK_TYPE_MENU_BUTTON,
"focus-on-click", FALSE,
- "relief", GTK_RELIEF_NONE,
NULL);
+ gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (priv->menu_button)), "flat");
gtk_stack_add_named (priv->title_stack, GTK_WIDGET (priv->menu_button), "sections");
- menu_box = g_object_new (GTK_TYPE_BOX,
- "orientation", GTK_ORIENTATION_HORIZONTAL,
- "spacing", 6,
- "visible", TRUE,
- NULL);
- gtk_container_add (GTK_CONTAINER (priv->menu_button), GTK_WIDGET (menu_box));
-
- priv->menu_label = g_object_new (GTK_TYPE_LABEL,
- NULL);
- gtk_container_add (GTK_CONTAINER (menu_box), GTK_WIDGET (priv->menu_label));
-
- arrow = gtk_image_new_from_icon_name ("pan-down-symbolic");
- gtk_container_add (GTK_CONTAINER (menu_box), GTK_WIDGET (arrow));
-
priv->popover = g_object_new (GTK_TYPE_POPOVER,
"relative-to", priv->menu_button,
"position", GTK_POS_BOTTOM,
diff --git a/gtk/inspector/misc-info.c b/gtk/inspector/misc-info.c
index 799838e8cb..5e42657a8e 100644
--- a/gtk/inspector/misc-info.c
+++ b/gtk/inspector/misc-info.c
@@ -237,7 +237,7 @@ update_info (gpointer data)
gtype = G_TYPE_FROM_INSTANCE (sl->priv->object);
- gtk_button_set_label (GTK_BUTTON (sl->priv->type), g_type_name (gtype));
+ gtk_menu_button_set_label (GTK_MENU_BUTTON (sl->priv->type), g_type_name (gtype));
gtk_inspector_type_popover_set_gtype (GTK_INSPECTOR_TYPE_POPOVER (sl->priv->type_popover),
gtype);
diff --git a/gtk/ui/gtkfilechooserwidget.ui b/gtk/ui/gtkfilechooserwidget.ui
index 613b7db827..63657aa325 100644
--- a/gtk/ui/gtkfilechooserwidget.ui
+++ b/gtk/ui/gtkfilechooserwidget.ui
@@ -60,7 +60,6 @@
<child>
<object class="GtkMenuButton" id="browse_new_folder_button">
<property name="tooltip-text" translatable="yes">Create Folder</property>
- <property name="use-underline">1</property>
<property name="popover">new_folder_popover</property>
<property name="icon-name">folder-new-symbolic</property>
<signal name="notify::active" handler="new_folder_popover_active"/>
diff --git a/gtk/ui/gtkplacesview.ui b/gtk/ui/gtkplacesview.ui
index 010612b90f..559e05d75b 100644
--- a/gtk/ui/gtkplacesview.ui
+++ b/gtk/ui/gtkplacesview.ui
@@ -295,14 +295,10 @@
<property name="receives-default">1</property>
<property name="direction">up</property>
<property name="popover">recent_servers_popover</property>
+ <property name="icon-name">pan-down-symbolic</property>
<style>
<class name="server-list-button"/>
</style>
- <child>
- <object class="GtkImage">
- <property name="icon-name">pan-down-symbolic</property>
- </object>
- </child>
</object>
</child>
<style>
diff --git a/testsuite/a11y/menubutton.txt b/testsuite/a11y/menubutton.txt
index ecfe438f70..6d4cf5445d 100644
--- a/testsuite/a11y/menubutton.txt
+++ b/testsuite/a11y/menubutton.txt
@@ -25,12 +25,6 @@ window1
<AtkComponent>
layer: widget
alpha: 1
- <AtkImage>
- image size: 16 x 16
- image description: (null)
- <AtkAction>
- action 0 name: click
- action 0 description: Clicks the button
imagemenuitem
"menu item"
parent: menu
diff --git a/testsuite/a11y/menubutton2.txt b/testsuite/a11y/menubutton2.txt
index 5dafe5000c..ab604e2437 100644
--- a/testsuite/a11y/menubutton2.txt
+++ b/testsuite/a11y/menubutton2.txt
@@ -94,9 +94,3 @@ window1
<AtkComponent>
layer: widget
alpha: 1
- <AtkImage>
- image size: 16 x 16
- image description: (null)
- <AtkAction>
- action 0 name: click
- action 0 description: Clicks the button
diff --git a/testsuite/a11y/menubutton3.txt b/testsuite/a11y/menubutton3.txt
index 5dafe5000c..ab604e2437 100644
--- a/testsuite/a11y/menubutton3.txt
+++ b/testsuite/a11y/menubutton3.txt
@@ -94,9 +94,3 @@ window1
<AtkComponent>
layer: widget
alpha: 1
- <AtkImage>
- image size: 16 x 16
- image description: (null)
- <AtkAction>
- action 0 name: click
- action 0 description: Clicks the button
diff --git a/testsuite/gtk/builder.c b/testsuite/gtk/builder.c
index 11203cf9a5..ec8691e0fa 100644
--- a/testsuite/gtk/builder.c
+++ b/testsuite/gtk/builder.c
@@ -2349,20 +2349,6 @@ test_level_bar (void)
g_object_unref (builder);
}
-static GObject *external_object = NULL, *external_object_swapped = NULL;
-
-_BUILDER_TEST_EXPORT void
-on_button_clicked (GtkButton *button, GObject *data)
-{
- external_object = data;
-}
-
-_BUILDER_TEST_EXPORT void
-on_button_clicked_swapped (GObject *data, GtkButton *button)
-{
- external_object_swapped = data;
-}
-
static void
test_expose_object (void)
{
@@ -2374,33 +2360,24 @@ test_expose_object (void)
"<interface>"
" <object class=\"GtkMenuButton\" id=\"button\">"
" <property name=\"popover\">external_menu</property>"
- " <signal name=\"clicked\" handler=\"on_button_clicked\" object=\"builder\" swapped=\"no\"/>"
- " <signal name=\"clicked\" handler=\"on_button_clicked_swapped\" object=\"builder\"/>"
" </object>"
"</interface>";
/*menu = gtk_menu_new ();*/
menu = gtk_popover_new (NULL);
builder = gtk_builder_new ();
- gtk_builder_expose_object (builder, "external_menu", G_OBJECT (menu));
gtk_builder_expose_object (builder, "builder", G_OBJECT (builder));
+ gtk_builder_expose_object (builder, "external_menu", G_OBJECT (menu));
gtk_builder_add_from_string (builder, buffer, -1, &error);
- g_assert (error == NULL);
+ g_assert_no_error (error);
obj = gtk_builder_get_object (builder, "button");
- g_assert (GTK_IS_BUTTON (obj));
+ g_assert (GTK_IS_MENU_BUTTON (obj));
g_assert (gtk_menu_button_get_popover (GTK_MENU_BUTTON (obj)) == GTK_POPOVER (menu));
- /* Connect signals and fake clicked event */
- gtk_builder_connect_signals (builder, NULL);
- gtk_button_clicked (GTK_BUTTON (obj));
-
- g_assert (external_object == G_OBJECT (builder));
- g_assert (external_object_swapped == G_OBJECT (builder));
-
- g_object_unref (builder);
g_object_unref (menu);
+ g_object_unref (builder);
}
static void