projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed default video depth not being initialized in headless mode
[rocksndiamonds.git]
/
src
/
libgame
/
gadgets.c
diff --git
a/src/libgame/gadgets.c
b/src/libgame/gadgets.c
index 736f1465fb2d381b5a07419f4f28759ff55de656..668641bd30be64133832e37550cbc06eccedd803 100644
(file)
--- a/
src/libgame/gadgets.c
+++ b/
src/libgame/gadgets.c
@@
-1681,16
+1681,20
@@
boolean HandleGadgets(int mx, int my, int button)
{
int last_x = gi->event.x;
int last_y = gi->event.y;
{
int last_x = gi->event.x;
int last_y = gi->event.y;
+ int last_mx = gi->event.mx;
+ int last_my = gi->event.my;
- gi->event.x = mx - gi->x;
- gi->event.y = my - gi->y;
+ gi->event.x =
gi->event.mx =
mx - gi->x;
+ gi->event.y =
gi->event.my =
my - gi->y;
if (gi->type == GD_TYPE_DRAWING_AREA)
{
gi->event.x /= gi->drawing.item_xsize;
gi->event.y /= gi->drawing.item_ysize;
if (gi->type == GD_TYPE_DRAWING_AREA)
{
gi->event.x /= gi->drawing.item_xsize;
gi->event.y /= gi->drawing.item_ysize;
- if (last_x != gi->event.x || last_y != gi->event.y)
+ if (last_x != gi->event.x || last_y != gi->event.y ||
+ ((last_mx != gi->event.mx || last_my != gi->event.my) &&
+ gi->event_mask & GD_EVENT_PIXEL_PRECISE))
changed_position = TRUE;
}
else if (gi->type & GD_TYPE_TEXT_INPUT && button != 0 && !motion_status)
changed_position = TRUE;
}
else if (gi->type & GD_TYPE_TEXT_INPUT && button != 0 && !motion_status)
@@
-1709,7
+1713,8
@@
boolean HandleGadgets(int mx, int my, int button)
if (gi->textinput.cursor_position != old_cursor_position)
DrawGadget(gi, DG_PRESSED, gi->direct_draw);
if (gi->textinput.cursor_position != old_cursor_position)
DrawGadget(gi, DG_PRESSED, gi->direct_draw);
- StartTextInput(gi->x, gi->y);
+ if (press_event)
+ StartTextInput(gi->x, gi->y, gi->width, gi->height);
}
else if (gi->type & GD_TYPE_TEXT_AREA && button != 0 && !motion_status)
{
}
else if (gi->type & GD_TYPE_TEXT_AREA && button != 0 && !motion_status)
{
@@
-1725,7
+1730,8
@@
boolean HandleGadgets(int mx, int my, int button)
if (gi->textarea.cursor_position != old_cursor_position)
DrawGadget(gi, DG_PRESSED, gi->direct_draw);
if (gi->textarea.cursor_position != old_cursor_position)
DrawGadget(gi, DG_PRESSED, gi->direct_draw);
- StartTextInput(gi->x, gi->y);
+ if (press_event)
+ StartTextInput(gi->x, gi->y, gi->width, gi->height);
}
else if (gi->type & GD_TYPE_SELECTBOX && gi->selectbox.open &&
!keep_selectbox_open)
}
else if (gi->type & GD_TYPE_SELECTBOX && gi->selectbox.open &&
!keep_selectbox_open)
@@
-1756,7
+1762,7
@@
boolean HandleGadgets(int mx, int my, int button)
new_gi->event.type = GD_EVENT_INFO_ENTERING;
new_gi->callback_info(new_gi);
}
new_gi->event.type = GD_EVENT_INFO_ENTERING;
new_gi->callback_info(new_gi);
}
- else if (last_info_gi != NULL)
+ else if (last_info_gi != NULL
&& last_info_gi->mapped
)
{
last_info_gi->event.type = GD_EVENT_INFO_LEAVING;
last_info_gi->callback_info(last_info_gi);
{
last_info_gi->event.type = GD_EVENT_INFO_LEAVING;
last_info_gi->callback_info(last_info_gi);