コード例 #1
0
ファイル: testinput.c プロジェクト: GYGit/gtk
/* Erase the old cursor, and/or draw a new one, if necessary */
static void
update_cursor (GtkWidget *widget,  gdouble x, gdouble y)
{
  static gint cursor_present = 0;
  gint state = !gdk_device_get_has_cursor (current_device) && cursor_proximity;

  x = floor (x);
  y = floor (y);

  if (surface != NULL)
    {
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
      cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (widget));
G_GNUC_END_IGNORE_DEPRECATIONS

      if (cursor_present && (cursor_present != state ||
			     x != cursor_x || y != cursor_y))
	{
          cairo_set_source_surface (cr, surface, 0, 0);
          cairo_rectangle (cr, cursor_x - 5, cursor_y - 5, 10, 10);
          cairo_fill (cr);
	}

      cursor_present = state;
      cursor_x = x;
      cursor_y = y;

      if (cursor_present)
	{
          cairo_set_source_rgb (cr, 0, 0, 0);
          cairo_rectangle (cr, 
                           cursor_x - 5, cursor_y -5,
			   10, 10);
          cairo_fill (cr);
	}

      cairo_destroy (cr);
    }
コード例 #2
0
ファイル: gdkinput.c プロジェクト: Pfiver/gtk
void
gdk_input_set_extension_events (GdkWindow *window, gint mask,
                                GdkExtensionMode mode)
{
  GdkDeviceManager *device_manager;
  GList *devices, *d;

  g_return_if_fail (GDK_IS_WINDOW (window));

  if (GDK_WINDOW_DESTROYED (window))
    return;

  if (mode == GDK_EXTENSION_EVENTS_NONE)
    mask = 0;

  window->extension_events = mask;

  device_manager = gdk_display_get_device_manager (_gdk_display);
  devices = gdk_device_manager_list_devices (device_manager,
                                             GDK_DEVICE_TYPE_FLOATING);

  for (d = devices; d; d = d->next)
    {
      GdkDevice *dev;
      gint dev_mask;

      dev = d->data;
      dev_mask = mask;

      if (gdk_device_get_mode (dev) == GDK_MODE_DISABLED ||
          (!gdk_device_get_has_cursor (dev) && mode == GDK_EXTENSION_EVENTS_CURSOR))
        dev_mask = 0;

      gdk_window_set_device_events (window, dev, mask);
    }

  g_list_free (devices);
}