summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-06-23 17:51:01 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-06-24 22:44:31 +0000
commit3a139453c4c197606cb16856f023c9b59f65dd44 (patch)
treeddba0dc014287ad84e9841f27f7e7aa61ad9e3c8
parent3fcfcf51f6276491154fbae749d58b60d8487c4f (diff)
downloadgtk+-3a139453c4c197606cb16856f023c9b59f65dd44.tar.gz
Remove popup-menu signal
We decided not to have generic context menu api, so this binding is a bit out of place too. Replace it by bindings in the individual widgets that have context menus.
-rw-r--r--gtk/gtkcolorswatch.c15
-rw-r--r--gtk/gtklabel.c21
-rw-r--r--gtk/gtklinkbutton.c24
-rw-r--r--gtk/gtknotebook.c17
-rw-r--r--gtk/gtktext.c17
-rw-r--r--gtk/gtktextview.c18
-rw-r--r--gtk/gtktoolbar.c17
-rw-r--r--gtk/gtkwidget.c36
-rw-r--r--gtk/gtkwidget.h5
9 files changed, 99 insertions, 71 deletions
diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c
index d17093fe9a..ba88da40b7 100644
--- a/gtk/gtkcolorswatch.c
+++ b/gtk/gtkcolorswatch.c
@@ -422,10 +422,10 @@ gtk_color_swatch_measure (GtkWidget *widget,
*natural = MAX (*natural, min);
}
-
-
static gboolean
-swatch_popup_menu (GtkWidget *widget)
+gtk_color_swatch_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data)
{
do_popup (GTK_COLOR_SWATCH (widget));
return TRUE;
@@ -551,7 +551,6 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
widget_class->drag_begin = swatch_drag_begin;
widget_class->drag_data_get = swatch_drag_data_get;
widget_class->drag_data_received = swatch_drag_data_received;
- widget_class->popup_menu = swatch_popup_menu;
widget_class->size_allocate = swatch_size_allocate;
widget_class->state_flags_changed = swatch_state_flags_changed;
@@ -565,6 +564,14 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
g_param_spec_boolean ("has-menu", P_("Has Menu"), P_("Whether the swatch should offer customization"),
TRUE, GTK_PARAM_READWRITE));
+ /* Context menu */
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_F10, GDK_SHIFT_MASK,
+ gtk_color_swatch_popup_menu, NULL);
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_Menu, 0,
+ gtk_color_swatch_popup_menu, NULL);
+
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_COLOR_SWATCH_ACCESSIBLE);
gtk_widget_class_set_css_name (widget_class, I_("colorswatch"));
}
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 16268b0d8e..61483807e2 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -484,7 +484,9 @@ static void gtk_label_recalculate (GtkLabel *label);
static void gtk_label_root (GtkWidget *widget);
static void gtk_label_map (GtkWidget *widget);
static void gtk_label_unmap (GtkWidget *widget);
-static gboolean gtk_label_popup_menu (GtkWidget *widget);
+static gboolean gtk_label_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data);
static void gtk_label_do_popup (GtkLabel *label,
double x,
double y);
@@ -654,7 +656,6 @@ gtk_label_class_init (GtkLabelClass *class)
widget_class->map = gtk_label_map;
widget_class->unmap = gtk_label_unmap;
widget_class->mnemonic_activate = gtk_label_mnemonic_activate;
- widget_class->popup_menu = gtk_label_popup_menu;
widget_class->drag_data_get = gtk_label_drag_data_get;
widget_class->grab_focus = gtk_label_grab_focus;
widget_class->focus = gtk_label_focus;
@@ -1137,6 +1138,14 @@ gtk_label_class_init (GtkLabelClass *class)
"activate-current-link",
NULL);
+ /* Context menu */
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_F10, GDK_SHIFT_MASK,
+ gtk_label_popup_menu, NULL);
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_Menu, 0,
+ gtk_label_popup_menu, NULL);
+
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LABEL_ACCESSIBLE);
gtk_widget_class_set_css_name (widget_class, I_("label"));
@@ -6133,11 +6142,11 @@ gtk_label_do_popup (GtkLabel *label,
}
static gboolean
-gtk_label_popup_menu (GtkWidget *widget)
+gtk_label_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data)
{
- GtkLabel *label = GTK_LABEL (widget);
-
- gtk_label_do_popup (label, -1, -1);
+ gtk_label_do_popup (GTK_LABEL (widget), -1, -1);
return TRUE;
}
diff --git a/gtk/gtklinkbutton.c b/gtk/gtklinkbutton.c
index bbf19a08c7..125b5dc6c7 100644
--- a/gtk/gtklinkbutton.c
+++ b/gtk/gtklinkbutton.c
@@ -123,7 +123,9 @@ static void gtk_link_button_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec);
static void gtk_link_button_clicked (GtkButton *button);
-static gboolean gtk_link_button_popup_menu (GtkWidget *widget);
+static gboolean gtk_link_button_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data);
static void gtk_link_button_drag_data_get_cb (GtkWidget *widget,
GdkDrag *drag,
GtkSelectionData *selection,
@@ -173,8 +175,6 @@ gtk_link_button_class_init (GtkLinkButtonClass *klass)
gobject_class->get_property = gtk_link_button_get_property;
gobject_class->finalize = gtk_link_button_finalize;
- widget_class->popup_menu = gtk_link_button_popup_menu;
-
button_class->clicked = gtk_link_button_clicked;
klass->activate_link = gtk_link_button_activate_link;
@@ -229,11 +229,19 @@ gtk_link_button_class_init (GtkLinkButtonClass *klass)
_gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LINK_BUTTON_ACCESSIBLE);
- gtk_widget_class_set_css_name (widget_class, I_("button"));
-
gtk_widget_class_install_action (widget_class, "clipboard.copy", NULL,
gtk_link_button_activate_clipboard_copy);
+
+ /* Context menu */
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_F10, GDK_SHIFT_MASK,
+ gtk_link_button_popup_menu, NULL);
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_Menu, 0,
+ gtk_link_button_popup_menu, NULL);
+
+ gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LINK_BUTTON_ACCESSIBLE);
+ gtk_widget_class_set_css_name (widget_class, I_("button"));
}
static GMenuModel *
@@ -443,7 +451,9 @@ gtk_link_button_clicked (GtkButton *button)
}
static gboolean
-gtk_link_button_popup_menu (GtkWidget *widget)
+gtk_link_button_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data)
{
gtk_link_button_do_popup (GTK_LINK_BUTTON (widget), -1, -1);
return TRUE;
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c
index 648da727f2..0fb75973dd 100644
--- a/gtk/gtknotebook.c
+++ b/gtk/gtknotebook.c
@@ -692,7 +692,9 @@ static void gtk_notebook_size_allocate (GtkWidget *widget,
int width,
int height,
int baseline);
-static gboolean gtk_notebook_popup_menu (GtkWidget *widget);
+static gboolean gtk_notebook_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data);
static void gtk_notebook_motion (GtkEventController *controller,
double x,
double y,
@@ -977,7 +979,6 @@ gtk_notebook_class_init (GtkNotebookClass *class)
widget_class->unmap = gtk_notebook_unmap;
widget_class->measure = gtk_notebook_measure;
widget_class->size_allocate = gtk_notebook_size_allocate;
- widget_class->popup_menu = gtk_notebook_popup_menu;
widget_class->grab_notify = gtk_notebook_grab_notify;
widget_class->state_flags_changed = gtk_notebook_state_flags_changed;
widget_class->focus = gtk_notebook_focus;
@@ -1309,6 +1310,14 @@ gtk_notebook_class_init (GtkNotebookClass *class)
add_tab_bindings (widget_class, GDK_CONTROL_MASK, GTK_DIR_TAB_FORWARD);
add_tab_bindings (widget_class, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
+ /* Context menu */
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_F10, GDK_SHIFT_MASK,
+ gtk_notebook_popup_menu, NULL);
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_Menu, 0,
+ gtk_notebook_popup_menu, NULL);
+
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_NOTEBOOK_ACCESSIBLE);
gtk_widget_class_set_css_name (widget_class, I_("notebook"));
}
@@ -2596,7 +2605,9 @@ gtk_notebook_gesture_pressed (GtkGestureClick *gesture,
static gboolean
-gtk_notebook_popup_menu (GtkWidget *widget)
+gtk_notebook_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer data)
{
GtkNotebook *notebook = GTK_NOTEBOOK (widget);
GtkNotebookPrivate *priv = notebook->priv;
diff --git a/gtk/gtktext.c b/gtk/gtktext.c
index 08eb55287b..eb6ec683be 100644
--- a/gtk/gtktext.c
+++ b/gtk/gtktext.c
@@ -375,7 +375,9 @@ static void gtk_text_set_alignment (GtkText *self,
/* Default signal handlers
*/
static GMenuModel *gtk_text_get_menu_model (GtkText *self);
-static gboolean gtk_text_popup_menu (GtkWidget *widget);
+static gboolean gtk_text_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data);
static void gtk_text_move_cursor (GtkText *self,
GtkMovementStep step,
int count,
@@ -700,7 +702,6 @@ gtk_text_class_init (GtkTextClass *class)
widget_class->state_flags_changed = gtk_text_state_flags_changed;
widget_class->root = gtk_text_root;
widget_class->mnemonic_activate = gtk_text_mnemonic_activate;
- widget_class->popup_menu = gtk_text_popup_menu;
widget_class->drag_drop = gtk_text_drag_drop;
widget_class->drag_motion = gtk_text_drag_motion;
widget_class->drag_leave = gtk_text_drag_leave;
@@ -1231,6 +1232,14 @@ gtk_text_class_init (GtkTextClass *class)
"misc.insert-emoji",
NULL);
+ /* Context menu */
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_F10, GDK_SHIFT_MASK,
+ gtk_text_popup_menu, NULL);
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_Menu, 0,
+ gtk_text_popup_menu, NULL);
+
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TEXT_ACCESSIBLE);
gtk_widget_class_set_css_name (widget_class, I_("text"));
}
@@ -5655,7 +5664,9 @@ gtk_text_mnemonic_activate (GtkWidget *widget,
}
static gboolean
-gtk_text_popup_menu (GtkWidget *widget)
+gtk_text_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer user_data)
{
gtk_text_do_popup (GTK_TEXT (widget), -1, -1);
return TRUE;
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index dae878fb79..2e7be3cf9d 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -441,7 +441,9 @@ static void gtk_text_view_drag_data_received (GtkWidget *widget,
GdkDrop *drop,
GtkSelectionData *selection_data);
-static gboolean gtk_text_view_popup_menu (GtkWidget *widget);
+static gboolean gtk_text_view_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer data);
static void gtk_text_view_move_cursor (GtkTextView *text_view,
GtkMovementStep step,
gint count,
@@ -725,8 +727,6 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
widget_class->drag_drop = gtk_text_view_drag_drop;
widget_class->drag_data_received = gtk_text_view_drag_data_received;
- widget_class->popup_menu = gtk_text_view_popup_menu;
-
container_class->add = gtk_text_view_add;
container_class->remove = gtk_text_view_remove;
container_class->forall = gtk_text_view_forall;
@@ -1628,6 +1628,14 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
"move-focus",
"(i)", GTK_DIR_TAB_BACKWARD);
+ /* Context menu */
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_F10, GDK_SHIFT_MASK,
+ gtk_text_view_popup_menu, NULL);
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_Menu, 0,
+ gtk_text_view_popup_menu, NULL);
+
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TEXT_VIEW_ACCESSIBLE);
gtk_widget_class_set_css_name (widget_class, I_("textview"));
@@ -8780,7 +8788,9 @@ gtk_text_view_do_popup (GtkTextView *text_view,
}
static gboolean
-gtk_text_view_popup_menu (GtkWidget *widget)
+gtk_text_view_popup_menu (GtkWidget *widget,
+ GVariant *args,
+ gpointer data)
{
gtk_text_view_do_popup (GTK_TEXT_VIEW (widget), NULL);
return TRUE;
diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c
index eb31c630d4..6170d44a98 100644
--- a/gtk/gtktoolbar.c
+++ b/gtk/gtktoolbar.c
@@ -234,7 +234,9 @@ static void gtk_toolbar_arrow_button_press (GtkGesture *gesture
GtkToolbar *toolbar);
static void gtk_toolbar_arrow_button_clicked (GtkWidget *button,
GtkToolbar *toolbar);
-static gboolean gtk_toolbar_popup_menu (GtkWidget *toolbar);
+static gboolean gtk_toolbar_popup_menu (GtkWidget *toolbar,
+ GVariant *args,
+ gpointer data);
static void gtk_toolbar_reconfigured (GtkToolbar *toolbar);
static void gtk_toolbar_measure (GtkWidget *widget,
@@ -387,7 +389,6 @@ gtk_toolbar_class_init (GtkToolbarClass *klass)
widget_class->root = gtk_toolbar_root;
widget_class->unroot = gtk_toolbar_unroot;
- widget_class->popup_menu = gtk_toolbar_popup_menu;
container_class->add = gtk_toolbar_add;
container_class->remove = gtk_toolbar_remove;
@@ -524,6 +525,14 @@ gtk_toolbar_class_init (GtkToolbarClass *klass)
add_ctrl_tab_bindings (widget_class, 0, GTK_DIR_TAB_FORWARD);
add_ctrl_tab_bindings (widget_class, GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
+ /* Context menu */
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_F10, GDK_SHIFT_MASK,
+ gtk_toolbar_popup_menu, NULL);
+ gtk_widget_class_add_binding (widget_class,
+ GDK_KEY_Menu, 0,
+ gtk_toolbar_popup_menu, NULL);
+
gtk_widget_class_set_css_name (widget_class, I_("toolbar"));
}
@@ -2234,7 +2243,9 @@ gtk_toolbar_pressed_cb (GtkGestureClick *gesture,
}
static gboolean
-gtk_toolbar_popup_menu (GtkWidget *toolbar)
+gtk_toolbar_popup_menu (GtkWidget *toolbar,
+ GVariant *args,
+ gpointer data)
{
gboolean return_value;
/* This function is the handler for the "popup menu" keybinding,
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 4b8a406a90..33f0288967 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -533,7 +533,6 @@ enum {
DRAG_DROP,
DRAG_DATA_GET,
DRAG_DATA_RECEIVED,
- POPUP_MENU,
ACCEL_CLOSURES_CHANGED,
DISPLAY_CHANGED,
CAN_ACTIVATE_ACCEL,
@@ -2092,32 +2091,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
_gtk_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECTv);
/**
- * GtkWidget::popup-menu:
- * @widget: the object which received the signal
- *
- * This signal gets emitted whenever a widget should pop up a context
- * menu. This usually happens through the standard key binding mechanism;
- * by pressing a certain key while a widget is focused, the user can cause
- * the widget to pop up a menu. For example, the #GtkEntry widget creates
- * a menu with clipboard commands. See the
- * [Popup Menu Migration Checklist][checklist-popup-menu]
- * for an example of how to use this signal.
- *
- * Returns: %TRUE if a menu was activated
- */
- widget_signals[POPUP_MENU] =
- g_signal_new (I_("popup-menu"),
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GtkWidgetClass, popup_menu),
- _gtk_boolean_handled_accumulator, NULL,
- _gtk_marshal_BOOLEAN__VOID,
- G_TYPE_BOOLEAN, 0);
- g_signal_set_va_marshaller (widget_signals[POPUP_MENU],
- G_TYPE_FROM_CLASS (klass),
- _gtk_marshal_BOOLEAN__VOIDv);
-
- /**
* GtkWidget::accel-closures-changed:
* @widget: the object which received the signal.
*
@@ -2158,15 +2131,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
G_TYPE_FROM_CLASS (klass),
_gtk_marshal_BOOLEAN__UINTv);
- gtk_widget_class_add_binding_signal (klass,
- GDK_KEY_F10, GDK_SHIFT_MASK,
- "popup-menu",
- NULL);
- gtk_widget_class_add_binding_signal (klass,
- GDK_KEY_Menu, 0,
- "popup-menu",
- NULL);
-
gtk_widget_class_set_accessible_type (klass, GTK_TYPE_WIDGET_ACCESSIBLE);
gtk_widget_class_set_css_name (klass, I_("widget"));
}
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index 8651001b0f..d264b47176 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -207,8 +207,6 @@ struct _GtkWidget
* dragged data has been received.
* @drag_failed: Signal emitted on the drag source when a drag has
* failed.
- * @popup_menu: Signal emitted whenever a widget should pop up a
- * context menu.
* @get_accessible: Returns the accessible object that describes the
* widget to an assistive technology.
* @can_activate_accel: Signal allows applications and derived widgets
@@ -307,9 +305,6 @@ struct _GtkWidgetClass
GdkDrag *drag,
GtkDragResult result);
- /* Signals used only for keybindings */
- gboolean (* popup_menu) (GtkWidget *widget);
-
/* accessibility support
*/
AtkObject * (* get_accessible) (GtkWidget *widget);