Render Android hourglass cursor mechanics more consistent with X
* src/androidterm.c (android_show_hourglass): Always define the hourglass cursor, but... (android_hide_hourglass): ... restore the invisible cursor subsequently, if need be. (android_toggle_visible_pointer): Do not hide the current cursor if it is an hourglass.
This commit is contained in:
parent
d6aea7cc94
commit
144b268a84
1 changed files with 26 additions and 12 deletions
|
@ -125,22 +125,39 @@ android_show_hourglass (struct frame *f)
|
|||
|
||||
x->hourglass = true;
|
||||
|
||||
if (!f->pointer_invisible)
|
||||
android_define_cursor (FRAME_ANDROID_WINDOW (f),
|
||||
x->hourglass_cursor);
|
||||
/* An hourglass cursor ought to be visible whether or not the standard
|
||||
cursor is invisible. */
|
||||
android_define_cursor (FRAME_ANDROID_WINDOW (f),
|
||||
x->hourglass_cursor);
|
||||
}
|
||||
|
||||
static android_cursor
|
||||
make_invisible_cursor (struct android_display_info *dpyinfo)
|
||||
{
|
||||
return android_create_font_cursor (ANDROID_XC_NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
android_hide_hourglass (struct frame *f)
|
||||
{
|
||||
struct android_output *x;
|
||||
struct android_display_info *dpyinfo;
|
||||
|
||||
x = FRAME_ANDROID_OUTPUT (f);
|
||||
dpyinfo = FRAME_DISPLAY_INFO (f);
|
||||
x->hourglass = false;
|
||||
|
||||
if (!f->pointer_invisible)
|
||||
android_define_cursor (FRAME_ANDROID_WINDOW (f),
|
||||
x->current_cursor);
|
||||
else
|
||||
{
|
||||
if (!dpyinfo->invisible_cursor)
|
||||
dpyinfo->invisible_cursor = make_invisible_cursor (dpyinfo);
|
||||
|
||||
android_define_cursor (FRAME_ANDROID_WINDOW (f),
|
||||
dpyinfo->invisible_cursor);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -259,12 +276,6 @@ android_ring_bell (struct frame *f)
|
|||
}
|
||||
}
|
||||
|
||||
static android_cursor
|
||||
make_invisible_cursor (struct android_display_info *dpyinfo)
|
||||
{
|
||||
return android_create_font_cursor (ANDROID_XC_NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
android_toggle_visible_pointer (struct frame *f, bool invisible)
|
||||
{
|
||||
|
@ -272,6 +283,10 @@ android_toggle_visible_pointer (struct frame *f, bool invisible)
|
|||
|
||||
dpyinfo = FRAME_DISPLAY_INFO (f);
|
||||
|
||||
/* An hourglass cursor overrides invisibility. */
|
||||
if (FRAME_ANDROID_OUTPUT (f)->hourglass)
|
||||
goto set_invisibility;
|
||||
|
||||
if (!dpyinfo->invisible_cursor)
|
||||
dpyinfo->invisible_cursor = make_invisible_cursor (dpyinfo);
|
||||
|
||||
|
@ -280,10 +295,9 @@ android_toggle_visible_pointer (struct frame *f, bool invisible)
|
|||
dpyinfo->invisible_cursor);
|
||||
else
|
||||
android_define_cursor (FRAME_ANDROID_WINDOW (f),
|
||||
(FRAME_ANDROID_OUTPUT (f)->hourglass
|
||||
? f->output_data.android->hourglass_cursor
|
||||
: f->output_data.android->current_cursor));
|
||||
f->output_data.android->current_cursor);
|
||||
|
||||
set_invisibility:
|
||||
f->pointer_invisible = invisible;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue