g_free (path);
}
-static gboolean
-psppire_cell_renderer_button_focus_out_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer data)
-{
- PsppireCellRendererButton *cell_button = data;
-
- g_signal_handlers_disconnect_by_func (widget,
- psppire_cell_renderer_button_focus_out_event,
- data);
- g_signal_handlers_disconnect_by_func (widget,
- psppire_cell_renderer_button_clicked,
- data);
-
- gtk_cell_renderer_stop_editing (GTK_CELL_RENDERER (cell_button), FALSE);
-
- return FALSE;
-}
-
#define IDLE_ID_STRING "psppire-cell-renderer-button-idle-id"
static gboolean
/* Allow right-click events to propagate upward in the widget hierarchy.
Otherwise right-click menus, that trigger on a button-press-event on
the containing PsppSheetView, will pop up if the button is rendered as
- a facade but not if the button widget exists. */
+ a facade but not if the button widget exists.
+
+ We have to translate the event's data by hand to be relative to the
+ parent window, because the normal GObject signal propagation mechanism
+ won't do it for us. (This might be a hint that we're doing this
+ wrong.) */
+ gint x, y;
+
+ gdk_window_get_position (event->window, &x, &y);
+ event->x += x;
+ event->y += y;
g_signal_stop_emission_by_name (button, "button-press-event");
return FALSE;
}
"xalign", xalign,
"yalign", yalign,
"path", path,
- "slash", cell_button->slash,
NULL);
- g_signal_connect (G_OBJECT (cell_button->button), "focus-out-event",
- G_CALLBACK (psppire_cell_renderer_button_focus_out_event),
- cell);
g_signal_connect (G_OBJECT (cell_button->button), "clicked",
G_CALLBACK (psppire_cell_renderer_button_clicked),
cell);