if (LOWORD (lParam) == HTCLIENT)
{
f = x_window_to_frame (dpyinfo, hwnd);
- if (f && f->output_data.w32->hourglass_p
- && !menubar_in_use && !current_popup_menu)
- SetCursor (f->output_data.w32->hourglass_cursor);
- else if (f)
- SetCursor (f->output_data.w32->current_cursor);
+ if (f)
+ {
+ if (f->output_data.w32->hourglass_p
+ && !menubar_in_use && !current_popup_menu)
+ SetCursor (f->output_data.w32->hourglass_cursor);
+ else if (f->pointer_invisible)
+ SetCursor (NULL);
+ else
+ SetCursor (f->output_data.w32->current_cursor);
+ }
+
return 0;
}
goto dflt;
{
f->output_data.w32->current_cursor = cursor;
if (!f->output_data.w32->hourglass_p)
- SetCursor (cursor);
+ {
+ if (f->pointer_invisible)
+ SetCursor (NULL);
+ else
+ SetCursor (cursor);
+ }
}
return 0;
}
struct w32_output *w32 = FRAME_X_OUTPUT (f);
w32->hourglass_p = 0;
- SetCursor (w32->current_cursor);
+ if (f->pointer_invisible)
+ SetCursor (NULL);
+ else
+ SetCursor (w32->current_cursor);
}
/* FIXME: old code did that, but I don't know why. Anyway,
SetCursor (w32_load_cursor (IDC_ARROW));
}
+static void
+w32_toggle_invisible_pointer (struct frame *f, bool invisible)
+{
+ block_input ();
+
+ if (f->pointer_invisible != invisible)
+ {
+ f->pointer_invisible = invisible;
+ SET_FRAME_GARBAGED (f);
+ }
+
+ if (invisible)
+ SetCursor (NULL);
+ else
+ SetCursor (f->output_data.w32->current_cursor);
+
+ unblock_input ();
+}
+
/***********************************************************************
Initialization
***********************************************************************/
terminal->ins_del_lines_hook = x_ins_del_lines;
terminal->delete_glyphs_hook = x_delete_glyphs;
terminal->ring_bell_hook = w32_ring_bell;
+ terminal->toggle_invisible_pointer_hook = w32_toggle_invisible_pointer;
terminal->update_begin_hook = x_update_begin;
terminal->update_end_hook = x_update_end;
terminal->read_socket_hook = w32_read_socket;