gtk_widget_grab_focus (drawing_area);
- if (event->button == 3 &&
- event->type == GDK_BUTTON_PRESS)
+ if (_gtk_button_event_triggers_context_menu (event))
{
do_popup (colorsel, drawing_area, event->time);
return TRUE;
gtk_widget_grab_focus (widget);
priv->in_click = FALSE;
}
-
+
tmp_pos = gtk_entry_find_position (entry, event->x + priv->scroll_offset);
-
- if (event->button == 1)
+
+ if (_gtk_button_event_triggers_context_menu (event))
+ {
+ gtk_entry_do_popup (entry, event);
+ priv->button = 0; /* Don't wait for release, since the menu will gtk_grab_add */
+
+ return TRUE;
+ }
+ else if (event->button == 1)
{
gboolean have_selection = gtk_editable_get_selection_bounds (editable, &sel_start, &sel_end);
gtk_widget_error_bell (widget);
}
}
- else if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
- {
- gtk_entry_do_popup (entry, event);
- priv->button = 0; /* Don't wait for release, since the menu will gtk_grab_add */
-
- return TRUE;
- }
return FALSE;
}
if (in_press)
return FALSE;
- if (event->button != 3)
+ if (!_gtk_button_event_triggers_context_menu (event))
return FALSE;
in_press = TRUE;
if (in_press)
return FALSE;
- if (event->button != 3)
+ if (!_gtk_button_event_triggers_context_menu (event))
return FALSE;
in_press = TRUE;
if (info->active_link)
{
- if (event->button == 1)
+ if (_gtk_button_event_triggers_context_menu (event))
{
info->link_clicked = 1;
- gtk_widget_queue_draw (widget);
+ gtk_label_do_popup (label, event);
+ return TRUE;
}
- else if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
+ else if (event->button == 1)
{
info->link_clicked = 1;
- gtk_label_do_popup (label, event);
- return TRUE;
+ gtk_widget_queue_draw (widget);
}
}
info->in_drag = FALSE;
info->select_words = FALSE;
- if (event->button == 1)
+ if (_gtk_button_event_triggers_context_menu (event))
+ {
+ gtk_label_do_popup (label, event);
+
+ return TRUE;
+ }
+ else if (event->button == 1)
{
if (!gtk_widget_has_focus (widget))
{
return TRUE;
}
- else if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
- {
- gtk_label_do_popup (label, event);
- return TRUE;
- }
return FALSE;
}
#include "gtkstock.h"
#include "gtkshow.h"
#include "gtktooltip.h"
+#include "gtkprivate.h"
#include "gtkintl.h"
#include "a11y/gtklinkbuttonaccessible.h"
if (!gtk_widget_has_focus (widget))
gtk_widget_grab_focus (widget);
- if ((event->button == 3) && (event->type == GDK_BUTTON_PRESS))
+ if (_gtk_button_event_triggers_context_menu (event))
{
gtk_link_button_do_popup (GTK_LINK_BUTTON (widget), event);
return continue_emission;
}
+
+gboolean
+_gtk_button_event_triggers_context_menu (GdkEventButton *event)
+{
+ if (event->type == GDK_BUTTON_PRESS)
+ {
+ if (event->button == 3 &&
+ ! (event->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK)))
+ return TRUE;
+
+#ifdef GDK_WINDOWING_QUARTZ
+ if (event->button == 1 &&
+ ! (event->state & (GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) &&
+ (event->state & GDK_CONTROL_MASK))
+ return TRUE;
+#endif
+ }
+
+ return FALSE;
+}
ret = FALSE;
- /* Ignore double-clicks and triple-clicks */
- if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
+ if (_gtk_button_event_triggers_context_menu (event))
{
ret = do_popup_menu_for_process_tree_view (widget, event, op);
}
if (arrow)
return gtk_notebook_arrow_button_press (notebook, arrow, event->button);
- if (event->button == 3 && priv->menu)
+ if (priv->menu && _gtk_button_event_triggers_context_menu (event))
{
gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL,
NULL, NULL, 3, event->time);
void _gtk_modules_settings_changed (GtkSettings *settings,
const gchar *modules);
+gboolean _gtk_button_event_triggers_context_menu (GdkEventButton *event);
+
G_END_DECLS
#endif /* __GTK_PRIVATE_H__ */
gpointer user_data)
{
GtkRecentChooserDefault *impl = GTK_RECENT_CHOOSER_DEFAULT (user_data);
-
- if (event->button == 3)
+
+ if (_gtk_button_event_triggers_context_menu (event))
{
GtkTreePath *path;
gboolean res;
if (handled)
return TRUE;
- if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
+ if (_gtk_button_event_triggers_context_menu (event))
{
- emit_activate_signal (status_icon);
+ emit_popup_menu_signal (status_icon, event->button, event->time);
return TRUE;
}
- else if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
+ else if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
{
- emit_popup_menu_signal (status_icon, event->button, event->time);
+ emit_activate_signal (status_icon);
return TRUE;
}
{
gtk_text_view_reset_im_context (text_view);
- if (event->button == 1)
+ if (_gtk_button_event_triggers_context_menu (event))
+ {
+ gtk_text_view_do_popup (text_view, event);
+ return TRUE;
+ }
+ else if (event->button == 1)
{
/* If we're in the selection, start a drag copy/move of the
* selection; otherwise, start creating a new selection.
priv->editable);
return TRUE;
}
- else if (event->button == 3)
- {
- gtk_text_view_do_popup (text_view, event);
- return TRUE;
- }
}
else if ((event->type == GDK_2BUTTON_PRESS ||
event->type == GDK_3BUTTON_PRESS) &&
{
GtkWidget *window;
- if (event->button == 3)
+ if (_gtk_button_event_triggers_context_menu (event))
{
gboolean return_value;