Re: long standing dnd bug fixes
- From: Owen Taylor <otaylor redhat com>
- To: Tim Janik <timj gtk org>
- Cc: Gtk+ Developers <gtk-devel-list gnome org>
- Subject: Re: long standing dnd bug fixes
- Date: 08 Jan 2002 15:46:48 -0500
Tim Janik <timj gtk org> writes:
> On 7 Jan 2002, Owen Taylor wrote:
>
> > This isn't right; new_allocation.x is completel meaningless here, and it
> > just happens to work in your case since you have new_allocation.x,y == 0.
> > The GTK+-1.2 fix was:
> >
> > data->found = data->callback (widget,
> > data->context,
> > data->x - x_offset,
> > data->y - y_offset,
> > data->time);
> >
> > Which unfortunately isn't right either [:-(, it must have broken some working
> > programs] since the coordinates passed to data->callback are supposed to be
> > allocation relative, not widget->window relative.
> >
> > The right fix is along the lines of:
> >
> > if (GTK_NO_WINDOW (widget))
> > {
> > gdk_window_get_position (window, &tx, &ty);
> >
> > window_allocation_offset_x = tx - widget->allocation.x;
> > window_allocation_offset_y = ty - widget->allocation.y;
> > }
> > else
> > {
> > window_allocation_offset_x = 0;
> > window_allocation_offset_y = 0;
>
> then, shouldn't this simply be:
>
> if (GTK_WIDGET_NO_WINDOW (widget))
> {
> widget_allocation_x = widget->allocation.x;
> widget_allocation_y = widget->allocation.y;
> }
>
> [...]
>
> data->found = data->callback (widget,
> data->context,
> data->x - x_offset - widget_allocation_x,
> data->y - y_offset - widget_allocation_y,
> data->time);
>
> since y/x_offset just translates data.x/y from widget->parent->window
> to widget->window, and subtratacting widget_allocation_x/y makes those
> coordinates allocation relative?
Yes, what I mailed isn't exactly right. But this isn't exactly right either -- the
offset to add to window coordinates to get allocation coordinates isn't 0
for !NO_WINDOW widgets.
The correct values are:
allocation.x, - allocation.y : NO_WINDOW widgets
window.x - allocation.x, window.y - allocation.: !NO_WINDOW widgets.
Will check in a fix.
Regards,
Owen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]