menu_item_add_divider(menu);
}
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, bar, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
static void bar_menu_add_popup(GtkWidget *widget)
pane++;
}
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, bar, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
menu_item_add_stock(menu, _("Add entry"), GTK_STOCK_ADD, G_CALLBACK(bar_pane_exif_conf_dialog_cb), ped->widget);
menu_item_add_check(menu, _("Show hidden entries"), ped->show_all, G_CALLBACK(bar_pane_exif_toggle_show_all_cb), ped);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
static gboolean bar_pane_exif_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
if (bevent->button == MOUSE_BUTTON_RIGHT)
{
menu = bar_pane_gps_menu(pgd);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
return TRUE;
}
else if (bevent->button == MOUSE_BUTTON_MIDDLE)
GtkWidget *menu;
menu = bar_pane_histogram_menu(phd);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
return TRUE;
}
menu_item_add_check(submenu, _("Collapse unchecked"), pkd->collapse_unchecked, G_CALLBACK(bar_pane_keywords_collapse_unchecked_toggle_cb), pkd);
menu_item_add_check(submenu, _("Hide unchecked"), pkd->hide_unchecked, G_CALLBACK(bar_pane_keywords_hide_unchecked_toggle_cb), pkd);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
/* take ownership of menu */
g_object_ref_sink(G_OBJECT(menu));
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
void cache_maintenance(const gchar *path)
return ret;
}
-static void collection_table_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- CollectTable *ct = data;
- GtkTreeModel *store;
- GtkTreeIter iter;
- gint column;
- GtkTreePath *tpath;
- gint cw, ch;
-
- if (!collection_table_find_iter(ct, ct->click_info, &iter, &column)) return;
- store = gtk_tree_view_get_model(GTK_TREE_VIEW(ct->listview));
- tpath = gtk_tree_model_get_path(store, &iter);
- tree_view_get_cell_clamped(GTK_TREE_VIEW(ct->listview), tpath, column, FALSE, x, y, &cw, &ch);
- gtk_tree_path_free(tpath);
- *y += ch;
- popup_menu_position_clamp(menu, x, y, 0);
-}
-
-static gboolean collection_table_press_key_cb(GtkWidget *UNUSED(widget), GdkEventKey *event, gpointer data)
+static gboolean collection_table_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
CollectTable *ct = data;
gint focus_row = 0;
tip_unschedule(ct);
ct->popup = collection_table_popup_menu(ct, (info != NULL));
- gtk_menu_popup(GTK_MENU(ct->popup), NULL, NULL, collection_table_menu_pos_cb, ct, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(ct->popup), widget, GDK_GRAVITY_SOUTH, GDK_GRAVITY_CENTER, NULL);
+
break;
default:
stop_signal = FALSE;
break;
case MOUSE_BUTTON_RIGHT:
ct->popup = collection_table_popup_menu(ct, (info != NULL));
- gtk_menu_popup(GTK_MENU(ct->popup), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(ct->popup), NULL);
break;
default:
break;
static void collection_table_dnd_receive(GtkWidget *UNUSED(widget), GdkDragContext *context,
gint x, gint y,
GtkSelectionData *selection_data, guint info,
- guint time, gpointer data)
+ guint UNUSED(time), gpointer data)
{
CollectTable *ct = data;
GList *list = NULL;
ct->drop_list = list;
ct->drop_info = drop_info;
menu = collection_table_drop_menu(ct);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
return;
}
work = work->next;
{
menu = dupe_menu_popup_second(dw, di);
}
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
if (!di) return FALSE;
dupe_window_recompare(dw);
}
-static void dupe_popup_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- GtkWidget *view = data;
- GtkTreePath *tpath;
- gint cx, cy, cw, ch;
- gint column;
-
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(view), &tpath, NULL);
- if (!tpath) return;
-
- if (gtk_tree_view_get_column(GTK_TREE_VIEW(view), DUPE_COLUMN_NAME - 1) != NULL)
- {
- column = DUPE_COLUMN_NAME - 1;
- }
- else
- {
- /* dw->second_listview */
- column = 0;
- }
- tree_view_get_cell_clamped(GTK_TREE_VIEW(view), tpath, column, TRUE, &cx, &cy, &cw, &ch);
- gtk_tree_path_free(tpath);
- cy += ch;
- popup_menu_position_clamp(menu, &cx, &cy, 0);
- *x = cx;
- *y = cy;
-}
-
-static gboolean dupe_window_keypress_cb(GtkWidget *UNUSED(widget), GdkEventKey *event, gpointer data)
+static gboolean dupe_window_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
DupeWindow *dw = data;
gboolean stop_signal = FALSE;
GtkWidget *menu;
menu = dupe_menu_popup_main(dw, di);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- dupe_popup_menu_pos_cb, listview, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), widget, GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER, NULL);
}
else
{
GtkWidget *menu;
menu = dupe_menu_popup_second(dw, di);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- dupe_popup_menu_pos_cb, listview, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), widget, GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER, NULL);
}
break;
default:
static void dupe_dnd_data_get(GtkWidget *widget, GdkDragContext *context,
gint UNUSED(x), gint UNUSED(y),
GtkSelectionData *selection_data, guint info,
- guint time, gpointer data)
+ guint UNUSED(time), gpointer data)
{
DupeWindow *dw = data;
GtkWidget *source;
{
GtkWidget *menu;
menu = dupe_confirm_dir_list(dw, list);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
return;
}
work = work->next;
*-----------------------------------------------------------------------------
*/
-static void view_window_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- ViewWindow *vw = data;
- ImageWindow *imd;
-
- imd = view_window_active_image(vw);
- gdk_window_get_origin(gtk_widget_get_window(imd->pr), x, y);
- popup_menu_position_clamp(menu, x, y, 0);
-}
-
-static gboolean view_window_key_press_cb(GtkWidget *UNUSED(widget), GdkEventKey *event, gpointer data)
+static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *event, gpointer data)
{
ViewWindow *vw = data;
ImageWindow *imd;
case GDK_KEY_Menu:
case GDK_KEY_F10:
menu = view_popup_menu(vw);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- view_window_menu_pos_cb, vw, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), widget, GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER, NULL);
break;
default:
stop_signal = FALSE;
break;
case MOUSE_BUTTON_RIGHT:
menu = view_popup_menu(vw);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
break;
default:
break;
static void view_window_get_dnd_data(GtkWidget *UNUSED(widget), GdkDragContext *context,
gint UNUSED(x), gint UNUSED(y),
GtkSelectionData *selection_data, guint info,
- guint time, gpointer data)
+ guint UNUSED(time), gpointer data)
{
ViewWindow *vw = data;
ImageWindow *imd;
{
GtkWidget *menu;
menu = view_confirm_dir_list(vw, list);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
return;
}
work = work->next;
{
LayoutWindow *lw = data;
GtkWidget *menu;
- GdkEvent *event;
- guint32 etime;
menu = submenu_add_sort(NULL, G_CALLBACK(layout_sort_menu_cb), lw, FALSE, FALSE, TRUE, lw->sort_method);
g_signal_connect(G_OBJECT(menu), "selection_done",
G_CALLBACK(layout_sort_menu_hide_cb), NULL);
- event = gtk_get_current_event();
- if (event)
- {
- etime = gdk_event_get_time(event);
- gdk_event_free(event);
- }
- else
- {
- etime = 0;
- }
-
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, etime);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
static GtkWidget *layout_sort_button(LayoutWindow *lw, GtkWidget *box)
{
LayoutWindow *lw = data;
GtkWidget *menu;
- GdkEvent *event;
- guint32 etime;
menu = submenu_add_zoom(NULL, G_CALLBACK(layout_zoom_menu_cb),
lw, FALSE, FALSE, TRUE, options->image.zoom_mode);
g_signal_connect(G_OBJECT(menu), "selection_done",
G_CALLBACK(layout_zoom_menu_hide_cb), NULL);
- event = gtk_get_current_event();
- if (event)
- {
- etime = gdk_event_get_time(event);
- gdk_event_free(event);
- }
- else
- {
- etime = 0;
- }
-
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, etime);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
static GtkWidget *layout_zoom_button(LayoutWindow *lw, GtkWidget *box, gint size, gboolean UNUSED(expand))
return menu;
}
-static void layout_image_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- LayoutWindow *lw = data;
-
- gdk_window_get_origin(gtk_widget_get_window(lw->image->pr), x, y);
- popup_menu_position_clamp(menu, x, y, 0);
-}
-
void layout_image_menu_popup(LayoutWindow *lw)
{
GtkWidget *menu;
menu = layout_image_pop_menu(lw);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, layout_image_menu_pos_cb, lw, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), lw->image->widget, GDK_GRAVITY_EAST, GDK_GRAVITY_CENTER, NULL);
}
/*
{
g_object_set_data(G_OBJECT(menu), "click_parent", imd->widget);
}
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
break;
default:
break;
{
g_object_set_data(G_OBJECT(menu), "click_parent", imd->widget);
}
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
break;
default:
break;
return NULL;
}
-static void pan_window_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- PanWindow *pw = data;
-
- gdk_window_get_origin(gtk_widget_get_window(pw->imd->pr), x, y);
- popup_menu_position_clamp(menu, x, y, 0);
-}
-
-static gboolean pan_window_key_press_cb(GtkWidget *UNUSED(widget), GdkEventKey *event, gpointer data)
+static gboolean pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
PanWindow *pw = data;
PixbufRenderer *pr;
case GDK_KEY_Menu:
case GDK_KEY_F10:
menu = pan_popup_menu(pw);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- pan_window_menu_pos_cb, pw, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), widget, GDK_GRAVITY_SOUTH, GDK_GRAVITY_CENTER, NULL);
+
break;
case '/':
pan_search_toggle_visible(pw, TRUE);
case MOUSE_BUTTON_RIGHT:
pan_info_update(pw, pi);
menu = pan_popup_menu(pw);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
break;
default:
break;
return menu;
}
-static void search_result_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- SearchData *sd = data;
- GtkTreePath *tpath;
- gint cx, cy, cw, ch;
-
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(sd->result_view), &tpath, NULL);
- if (!tpath) return;
-
- tree_view_get_cell_clamped(GTK_TREE_VIEW(sd->result_view), tpath,
- SEARCH_COLUMN_NAME - 1, TRUE, &cx, &cy, &cw, &ch);
- gtk_tree_path_free(tpath);
- cy += ch;
- popup_menu_position_clamp(menu, &cx, &cy, 0);
- *x = cx;
- *y = cy;
-}
-
/*
*-------------------------------------------------------------------
* result list input
GtkWidget *menu;
menu = search_result_menu(sd, (mfd != NULL), (search_result_count(sd, NULL) == 0));
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
if (!mfd) return FALSE;
sd->click_fd = NULL;
menu = search_result_menu(sd, (mfd != NULL), (search_result_count(sd, NULL) > 0));
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- search_result_menu_pos_cb, sd, 0, GDK_CURRENT_TIME);
+
+ gtk_menu_popup_at_widget(GTK_MENU(menu), widget, GDK_GRAVITY_EAST, GDK_GRAVITY_CENTER, NULL);
}
break;
default:
static void toolbar_menu_popup(GtkWidget *widget)
{
GtkWidget *menu;
- GtkWidget *vbox;
-
- vbox = gtk_widget_get_parent(widget);
menu = popup_menu_short_lived();
menu_item_add_divider(menu);
}
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, vbox, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
static gboolean toolbar_press_cb(GtkWidget *UNUSED(button), GdkEventButton *event, gpointer data)
g_list_free(editors_list);
}
-static void toolbar_menu_add_popup(GtkWidget *widget, gpointer data)
+static void toolbar_menu_add_popup(GtkWidget *UNUSED(widget), gpointer data)
{
GtkWidget *menu;
GList *editors_list;
}
g_list_free(editors_list);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, widget, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
static gboolean toolbar_menu_add_cb(GtkWidget *widget, gpointer data)
bookmark_populate_all(bm->key);
}
-static void bookmark_menu_position_cb(GtkMenu *UNUSED(menu), gint *x, gint *y, gint *UNUSED(pushed_in), gpointer data)
-{
- GtkWidget *button = data;
- GtkAllocation allocation;
-
- gtk_widget_get_allocation(button, &allocation);
- gdk_window_get_origin(gtk_widget_get_window(button), x, y);
- *y += allocation.y + allocation.height;
-}
-
static void bookmark_menu_popup(BookMarkData *bm, GtkWidget *button,
- gint button_n, guint32 time, gboolean local)
+ gint UNUSED(button_n), guint32 UNUSED(time), gboolean local)
{
GtkWidget *menu;
BookButtonData *b;
if (local)
{
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- bookmark_menu_position_cb, button, button_n, time);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), button, GDK_GRAVITY_NORTH_EAST, GDK_GRAVITY_CENTER, NULL);
}
else
{
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, button_n, time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
}
}
dest_view_bookmark(dd, GTK_TREE_VIEW(dd->f_view));
}
-static void dest_popup_position_cb(GtkMenu *menu, gint *x, gint *y,
- gboolean *UNUSED(push_in), gpointer data)
-{
- Dest_Data *dd = data;
- GtkTreeView *view;
- gint cw, ch;
-
- view = g_object_get_data(G_OBJECT(menu), "active_view");
-
- tree_view_get_cell_clamped(view, dd->right_click_path, 0, TRUE, x, y, &cw, &ch);
- *y += ch;
- popup_menu_position_clamp(menu, x, y, 0);
-}
-
static gboolean dest_popup_menu(Dest_Data *dd, GtkTreeView *view,
- guint button, guint32 time, gboolean local)
+ guint UNUSED(button), guint32 UNUSED(time), gboolean local)
{
GtkWidget *menu;
if (local)
{
g_object_set_data(G_OBJECT(menu), "active_view", view);
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- dest_popup_position_cb, dd, button, time);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(view), GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER, NULL);
}
else
{
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, button, time);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
+
}
return TRUE;
tab_completion_emit_tab_signal(td);
}
-static void tab_completion_popup_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- TabCompData *td = data;
- gint height;
- PangoLayout *layout;
- PangoRectangle strong_pos, weak_pos;
- gint length;
- gint xoffset, yoffset;
- GtkRequisition req;
- GdkScreen *screen;
- gint monitor_num;
- GdkRectangle monitor;
- GtkRequisition requisition;
- GtkAllocation allocation;
-
- gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(td->entry)), x, y);
-
- screen = gtk_widget_get_screen(GTK_WIDGET(menu));
- monitor_num = gdk_screen_get_monitor_at_window(screen, gtk_widget_get_window(GTK_WIDGET(td->entry)));
- gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor);
-
- gtk_widget_size_request(GTK_WIDGET(menu), &req);
-
- length = strlen(gtk_entry_get_text(GTK_ENTRY(td->entry)));
- gtk_entry_get_layout_offsets(GTK_ENTRY(td->entry), &xoffset, &yoffset);
-
- layout = gtk_entry_get_layout(GTK_ENTRY(td->entry));
- pango_layout_get_cursor_pos(layout, length, &strong_pos, &weak_pos);
-
- *x += strong_pos.x / PANGO_SCALE + xoffset;
-
- gtk_widget_get_requisition(td->entry, &requisition);
- gtk_widget_get_allocation(td->entry, &allocation);
-
- height = MIN(requisition.height, allocation.height);
-
- if (req.height > monitor.y + monitor.height - *y - height &&
- *y - monitor.y > monitor.y + monitor.height - *y)
- {
- height = MIN(*y - monitor.y, req.height);
- gtk_widget_set_size_request(GTK_WIDGET(menu), -1, height);
- *y -= height;
- }
- else
- {
- *y += height;
- }
-}
-
static void tab_completion_popup_list(TabCompData *td, GList *list)
{
GtkWidget *menu;
GList *work;
- GdkEvent *event;
- guint32 etime;
- gint ebutton;
gint count = 0;
if (!list) return;
g_signal_connect(G_OBJECT(menu), "key_press_event",
G_CALLBACK(tab_completion_popup_key_press), td);
- /* peek at the current event to get the time, etc. */
- event = gtk_get_current_event();
-
- if (event && event->type == GDK_BUTTON_RELEASE)
- {
- ebutton = event->button.button;
- }
- else
- {
- ebutton = 0;
- }
-
- if (event)
- {
- etime = gdk_event_get_time(event);
- gdk_event_free(event);
- }
- else
- {
- etime = 0;
- }
-
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
- tab_completion_popup_pos_cb, td, ebutton, etime);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), td->entry, GDK_GRAVITY_NORTH_EAST, GDK_GRAVITY_NORTH, NULL);
}
#ifndef CASE_SORT
static void vd_dnd_drop_receive(GtkWidget *widget,
GdkDragContext *UNUSED(context), gint x, gint y,
GtkSelectionData *selection_data, guint info,
- guint time, gpointer data)
+ guint UNUSED(time), gpointer data)
{
ViewDir *vd = data;
GtkTreePath *tpath;
if (done == FALSE)
{
vd->popup = vd_drop_menu(vd, active);
- gtk_menu_popup(GTK_MENU(vd->popup), NULL, NULL, NULL, NULL, 0, time);
+ gtk_menu_popup_at_pointer(GTK_MENU(vd->popup), NULL);
}
vd->drop_fd = fd;
}
vd->popup = vd_pop_menu(vd, vd->click_fd);
- gtk_menu_popup(GTK_MENU(vd->popup), NULL, NULL, NULL, NULL,
- bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(vd->popup), NULL);
return TRUE;
}
vd->popup = vd_pop_menu(vd, vd->click_fd);
- gtk_menu_popup(GTK_MENU(vd->popup), NULL, NULL, vd_menu_position_cb, vd, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(vd->popup), NULL);
return TRUE;
}
if (bevent->button == MOUSE_BUTTON_RIGHT)
{
vd->popup = vd_pop_menu(vd, vd->click_fd);
- gtk_menu_popup(GTK_MENU(vd->popup), NULL, NULL, NULL, NULL,
- bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(vd->popup), NULL);
return TRUE;
}
vd_color_set(vd, vd->click_fd, TRUE);
vd->popup = vd_pop_menu(vd, vd->click_fd);
- gtk_menu_popup(GTK_MENU(vd->popup), NULL, NULL, vd_menu_position_cb, vd, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_pointer(GTK_MENU(vd->popup), NULL);
return TRUE;
break;
if (bevent->button == MOUSE_BUTTON_RIGHT)
{
vd->popup = vd_pop_menu(vd, vd->click_fd);
- gtk_menu_popup(GTK_MENU(vd->popup), NULL, NULL, NULL, NULL,
- bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(vd->popup), NULL);
}
return (bevent->button != MOUSE_BUTTON_LEFT);
*-------------------------------------------------------------------
*/
-static void vfi_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- ViewFile *vf = data;
- GtkTreeModel *store;
- GtkTreeIter iter;
- gint column;
- GtkTreePath *tpath;
- gint cw, ch;
-
- if (!vficon_find_iter(vf, VFICON(vf)->click_fd, &iter, &column)) return;
- store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
- tpath = gtk_tree_model_get_path(store, &iter);
- tree_view_get_cell_clamped(GTK_TREE_VIEW(vf->listview), tpath, column, FALSE, x, y, &cw, &ch);
- gtk_tree_path_free(tpath);
- *y += ch;
- popup_menu_position_clamp(menu, x, y, 0);
-}
-
-gboolean vficon_press_key_cb(GtkWidget *UNUSED(widget), GdkEventKey *event, gpointer data)
+gboolean vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
ViewFile *vf = data;
gint focus_row = 0;
tip_unschedule(vf);
vf->popup = vf_pop_menu(vf);
- gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, vfi_menu_position_cb, vf, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(vf->popup), widget, GDK_GRAVITY_EAST, GDK_GRAVITY_CENTER, NULL);
break;
default:
stop_signal = FALSE;
break;
case MOUSE_BUTTON_RIGHT:
vf->popup = vf_pop_menu(vf);
- gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(vf->popup), NULL);
break;
default:
break;
return FALSE;
}
-static void vflist_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *UNUSED(push_in), gpointer data)
-{
- ViewFile *vf = data;
- GtkTreeModel *store;
- GtkTreeIter iter;
- GtkTreePath *tpath;
- gint cw, ch;
-
- if (vflist_find_row(vf, VFLIST(vf)->click_fd, &iter) < 0) return;
- store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
- tpath = gtk_tree_model_get_path(store, &iter);
- tree_view_get_cell_clamped(GTK_TREE_VIEW(vf->listview), tpath, FILE_COLUMN_NAME - 1, TRUE, x, y, &cw, &ch);
- gtk_tree_path_free(tpath);
- *y += ch;
- popup_menu_position_clamp(menu, x, y, 0);
-}
-
gboolean vflist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
ViewFile *vf = data;
}
vf->popup = vf_pop_menu(vf);
- gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, vflist_menu_position_cb, vf, 0, GDK_CURRENT_TIME);
+ gtk_menu_popup_at_widget(GTK_MENU(vf->popup), widget, GDK_GRAVITY_EAST, GDK_GRAVITY_CENTER, NULL);
return TRUE;
}
if (bevent->button == MOUSE_BUTTON_RIGHT)
{
vf->popup = vf_pop_menu(vf);
- gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, NULL, NULL,
- bevent->button, bevent->time);
+ gtk_menu_popup_at_pointer(GTK_MENU(vf->popup), NULL);
return TRUE;
}