diff --git a/gdk/win32/gdkdevice-virtual.c b/gdk/win32/gdkdevice-virtual.c index f93c28a0c3..a48024f22f 100644 --- a/gdk/win32/gdkdevice-virtual.c +++ b/gdk/win32/gdkdevice-virtual.c @@ -1,429 +1,429 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#include "config.h" - -#include - -#include -#include - -#include "gdkdisplayprivate.h" -#include "gdkdevice-virtual.h" -#include "gdkwin32.h" - -static gboolean gdk_device_virtual_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events); -static void gdk_device_virtual_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask); -static void gdk_device_virtual_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor); -static void gdk_device_virtual_warp (GdkDevice *device, - GdkScreen *screen, +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#include "config.h" + +#include + +#include +#include + +#include "gdkdisplayprivate.h" +#include "gdkdevice-virtual.h" +#include "gdkwin32.h" + +static gboolean gdk_device_virtual_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events); +static void gdk_device_virtual_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); +static void gdk_device_virtual_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor); +static void gdk_device_virtual_warp (GdkDevice *device, + GdkScreen *screen, gdouble x, gdouble y); -static void gdk_device_virtual_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gdouble *root_x, - gdouble *root_y, - gdouble *win_x, - gdouble *win_y, - GdkModifierType *mask); -static GdkGrabStatus gdk_device_virtual_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_); -static void gdk_device_virtual_ungrab (GdkDevice *device, - guint32 time_); -static GdkWindow * gdk_device_virtual_window_at_position (GdkDevice *device, - gdouble *win_x, - gdouble *win_y, - GdkModifierType *mask, - gboolean get_toplevel); -static void gdk_device_virtual_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask); - - -G_DEFINE_TYPE (GdkDeviceVirtual, gdk_device_virtual, GDK_TYPE_DEVICE) - -static void -gdk_device_virtual_class_init (GdkDeviceVirtualClass *klass) -{ - GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - - device_class->get_history = gdk_device_virtual_get_history; - device_class->get_state = gdk_device_virtual_get_state; - device_class->set_window_cursor = gdk_device_virtual_set_window_cursor; - device_class->warp = gdk_device_virtual_warp; - device_class->query_state = gdk_device_virtual_query_state; - device_class->grab = gdk_device_virtual_grab; - device_class->ungrab = gdk_device_virtual_ungrab; - device_class->window_at_position = gdk_device_virtual_window_at_position; - device_class->select_window_events = gdk_device_virtual_select_window_events; -} - -static void -gdk_device_virtual_init (GdkDeviceVirtual *device_virtual) -{ - GdkDevice *device; - - device = GDK_DEVICE (device_virtual); - -} - -void -_gdk_device_virtual_set_active (GdkDevice *device, - GdkDevice *new_active) -{ - GdkDeviceVirtual *virtual = GDK_DEVICE_VIRTUAL (device); - int n_axes, i; - GdkAtom label_atom; - GdkAxisUse use; - gdouble min_value, max_value, resolution; - - if (virtual->active_device == new_active) - return; - - virtual->active_device = new_active; - - if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - { - _gdk_device_reset_axes (device); - n_axes = gdk_device_get_n_axes (new_active); - for (i = 0; i < n_axes; i++) - { - _gdk_device_get_axis_info (new_active, i, - &label_atom, &use, - &min_value, &max_value, &resolution); - _gdk_device_add_axis (device, - label_atom, use, - min_value, max_value, resolution); - } - } - - g_signal_emit_by_name (G_OBJECT (device), "changed"); -} - -static gboolean -gdk_device_virtual_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events) -{ - /* History is only per slave device */ - return FALSE; -} - -static void -gdk_device_virtual_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask) -{ - GdkDeviceVirtual *virtual = GDK_DEVICE_VIRTUAL (device); - GdkDevice *active = virtual->active_device; - - GDK_DEVICE_GET_CLASS (active)->get_state (active, - window, axes, mask); -} - -static void -gdk_device_virtual_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor) -{ - GdkWin32Cursor *cursor_private; - GdkWindow *parent_window; - GdkWindowImplWin32 *impl; - HCURSOR hcursor; - HCURSOR hprevcursor; - - impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - cursor_private = (GdkWin32Cursor*) cursor; - - hprevcursor = impl->hcursor; - - if (!cursor) - hcursor = NULL; - else - hcursor = cursor_private->hcursor; - - if (hcursor != NULL) - { - /* If the pointer is over our window, set new cursor */ +static void gdk_device_virtual_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gdouble *root_x, + gdouble *root_y, + gdouble *win_x, + gdouble *win_y, + GdkModifierType *mask); +static GdkGrabStatus gdk_device_virtual_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_); +static void gdk_device_virtual_ungrab (GdkDevice *device, + guint32 time_); +static GdkWindow * gdk_device_virtual_window_at_position (GdkDevice *device, + gdouble *win_x, + gdouble *win_y, + GdkModifierType *mask, + gboolean get_toplevel); +static void gdk_device_virtual_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask); + + +G_DEFINE_TYPE (GdkDeviceVirtual, gdk_device_virtual, GDK_TYPE_DEVICE) + +static void +gdk_device_virtual_class_init (GdkDeviceVirtualClass *klass) +{ + GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); + + device_class->get_history = gdk_device_virtual_get_history; + device_class->get_state = gdk_device_virtual_get_state; + device_class->set_window_cursor = gdk_device_virtual_set_window_cursor; + device_class->warp = gdk_device_virtual_warp; + device_class->query_state = gdk_device_virtual_query_state; + device_class->grab = gdk_device_virtual_grab; + device_class->ungrab = gdk_device_virtual_ungrab; + device_class->window_at_position = gdk_device_virtual_window_at_position; + device_class->select_window_events = gdk_device_virtual_select_window_events; +} + +static void +gdk_device_virtual_init (GdkDeviceVirtual *device_virtual) +{ + GdkDevice *device; + + device = GDK_DEVICE (device_virtual); + +} + +void +_gdk_device_virtual_set_active (GdkDevice *device, + GdkDevice *new_active) +{ + GdkDeviceVirtual *virtual = GDK_DEVICE_VIRTUAL (device); + int n_axes, i; + GdkAtom label_atom; + GdkAxisUse use; + gdouble min_value, max_value, resolution; + + if (virtual->active_device == new_active) + return; + + virtual->active_device = new_active; + + if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) + { + _gdk_device_reset_axes (device); + n_axes = gdk_device_get_n_axes (new_active); + for (i = 0; i < n_axes; i++) + { + _gdk_device_get_axis_info (new_active, i, + &label_atom, &use, + &min_value, &max_value, &resolution); + _gdk_device_add_axis (device, + label_atom, use, + min_value, max_value, resolution); + } + } + + g_signal_emit_by_name (G_OBJECT (device), "changed"); +} + +static gboolean +gdk_device_virtual_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events) +{ + /* History is only per slave device */ + return FALSE; +} + +static void +gdk_device_virtual_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask) +{ + GdkDeviceVirtual *virtual = GDK_DEVICE_VIRTUAL (device); + GdkDevice *active = virtual->active_device; + + GDK_DEVICE_GET_CLASS (active)->get_state (active, + window, axes, mask); +} + +static void +gdk_device_virtual_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor) +{ + GdkWin32Cursor *cursor_private; + GdkWindow *parent_window; + GdkWindowImplWin32 *impl; + HCURSOR hcursor; + HCURSOR hprevcursor; + + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + cursor_private = (GdkWin32Cursor*) cursor; + + hprevcursor = impl->hcursor; + + if (!cursor) + hcursor = NULL; + else + hcursor = cursor_private->hcursor; + + if (hcursor != NULL) + { + /* If the pointer is over our window, set new cursor */ GdkWindow *curr_window = gdk_window_get_device_position (window, device, NULL, NULL, NULL); - - if (curr_window == window || - (curr_window && window == gdk_window_get_toplevel (curr_window))) - SetCursor (hcursor); - else - { - /* Climb up the tree and find whether our window is the - * first ancestor that has cursor defined, and if so, set - * new cursor. - */ - while (curr_window && curr_window->impl && - !GDK_WINDOW_IMPL_WIN32 (curr_window->impl)->hcursor) - { - curr_window = curr_window->parent; - if (curr_window == GDK_WINDOW (window)) - { - SetCursor (hcursor); - break; - } - } - } - } - - /* Unset the previous cursor: Need to make sure it's no longer in - * use before we destroy it, in case we're not over our window but - * the cursor is still set to our old one. - */ - if (hprevcursor != NULL && - GetCursor () == hprevcursor) - { - /* Look for a suitable cursor to use instead */ - hcursor = NULL; - parent_window = GDK_WINDOW (window)->parent; - - while (hcursor == NULL) - { - if (parent_window) - { - impl = GDK_WINDOW_IMPL_WIN32 (parent_window->impl); - hcursor = impl->hcursor; - parent_window = parent_window->parent; - } - else - hcursor = LoadCursor (NULL, IDC_ARROW); - } - - SetCursor (hcursor); - } -} - -static void -gdk_device_virtual_warp (GdkDevice *device, - GdkScreen *screen, + + if (curr_window == window || + (curr_window && window == gdk_window_get_toplevel (curr_window))) + SetCursor (hcursor); + else + { + /* Climb up the tree and find whether our window is the + * first ancestor that has cursor defined, and if so, set + * new cursor. + */ + while (curr_window && curr_window->impl && + !GDK_WINDOW_IMPL_WIN32 (curr_window->impl)->hcursor) + { + curr_window = curr_window->parent; + if (curr_window == GDK_WINDOW (window)) + { + SetCursor (hcursor); + break; + } + } + } + } + + /* Unset the previous cursor: Need to make sure it's no longer in + * use before we destroy it, in case we're not over our window but + * the cursor is still set to our old one. + */ + if (hprevcursor != NULL && + GetCursor () == hprevcursor) + { + /* Look for a suitable cursor to use instead */ + hcursor = NULL; + parent_window = GDK_WINDOW (window)->parent; + + while (hcursor == NULL) + { + if (parent_window) + { + impl = GDK_WINDOW_IMPL_WIN32 (parent_window->impl); + hcursor = impl->hcursor; + parent_window = parent_window->parent; + } + else + hcursor = LoadCursor (NULL, IDC_ARROW); + } + + SetCursor (hcursor); + } +} + +static void +gdk_device_virtual_warp (GdkDevice *device, + GdkScreen *screen, gdouble x, gdouble y) -{ - SetCursorPos (x - _gdk_offset_x, y - _gdk_offset_y); -} - -static void -gdk_device_virtual_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gdouble *root_x, - gdouble *root_y, - gdouble *win_x, - gdouble *win_y, - GdkModifierType *mask) -{ - GdkDeviceVirtual *virtual = GDK_DEVICE_VIRTUAL (device); - - _gdk_device_query_state (virtual->active_device, - window, root_window, child_window, - root_x, root_y, - win_x, win_y, - mask); -} - -static GdkGrabStatus -gdk_device_virtual_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_) -{ - GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - HCURSOR hcursor; - GdkWin32Cursor *cursor_private; - - cursor_private = (GdkWin32Cursor*) cursor; - - if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - { - if (!cursor) - hcursor = NULL; - else if ((hcursor = CopyCursor (cursor_private->hcursor)) == NULL) - WIN32_API_FAILED ("CopyCursor"); - - if (_gdk_win32_grab_cursor != NULL) - { - if (GetCursor () == _gdk_win32_grab_cursor) - SetCursor (NULL); - DestroyCursor (_gdk_win32_grab_cursor); - } - - _gdk_win32_grab_cursor = hcursor; - - if (_gdk_win32_grab_cursor != NULL) - SetCursor (_gdk_win32_grab_cursor); - else if (impl->hcursor != NULL) - SetCursor (impl->hcursor); - else - SetCursor (LoadCursor (NULL, IDC_ARROW)); - - SetCapture (GDK_WINDOW_HWND (window)); - } - - return GDK_GRAB_SUCCESS; -} - -static void -gdk_device_virtual_ungrab (GdkDevice *device, - guint32 time_) -{ - GdkDeviceGrabInfo *info; - GdkDisplay *display; - - display = gdk_device_get_display (device); - info = _gdk_display_get_last_device_grab (display, device); - - if (info) - info->serial_end = 0; - - if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - { - if (_gdk_win32_grab_cursor != NULL) - { - if (GetCursor () == _gdk_win32_grab_cursor) - SetCursor (NULL); - DestroyCursor (_gdk_win32_grab_cursor); - } - _gdk_win32_grab_cursor = NULL; - - ReleaseCapture (); - } - +{ + SetCursorPos (x - _gdk_offset_x, y - _gdk_offset_y); +} + +static void +gdk_device_virtual_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gdouble *root_x, + gdouble *root_y, + gdouble *win_x, + gdouble *win_y, + GdkModifierType *mask) +{ + GdkDeviceVirtual *virtual = GDK_DEVICE_VIRTUAL (device); + + _gdk_device_query_state (virtual->active_device, + window, root_window, child_window, + root_x, root_y, + win_x, win_y, + mask); +} + +static GdkGrabStatus +gdk_device_virtual_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_) +{ + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + HCURSOR hcursor; + GdkWin32Cursor *cursor_private; + + cursor_private = (GdkWin32Cursor*) cursor; + + if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) + { + if (!cursor) + hcursor = NULL; + else if ((hcursor = CopyCursor (cursor_private->hcursor)) == NULL) + WIN32_API_FAILED ("CopyCursor"); + + if (_gdk_win32_grab_cursor != NULL) + { + if (GetCursor () == _gdk_win32_grab_cursor) + SetCursor (NULL); + DestroyCursor (_gdk_win32_grab_cursor); + } + + _gdk_win32_grab_cursor = hcursor; + + if (_gdk_win32_grab_cursor != NULL) + SetCursor (_gdk_win32_grab_cursor); + else if (impl->hcursor != NULL) + SetCursor (impl->hcursor); + else + SetCursor (LoadCursor (NULL, IDC_ARROW)); + + SetCapture (GDK_WINDOW_HWND (window)); + } + + return GDK_GRAB_SUCCESS; +} + +static void +gdk_device_virtual_ungrab (GdkDevice *device, + guint32 time_) +{ + GdkDeviceGrabInfo *info; + GdkDisplay *display; + + display = gdk_device_get_display (device); + info = _gdk_display_get_last_device_grab (display, device); + + if (info) + info->serial_end = 0; + + if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) + { + if (_gdk_win32_grab_cursor != NULL) + { + if (GetCursor () == _gdk_win32_grab_cursor) + SetCursor (NULL); + DestroyCursor (_gdk_win32_grab_cursor); + } + _gdk_win32_grab_cursor = NULL; + + ReleaseCapture (); + } + _gdk_display_device_grab_update (display, device, device, 0); -} - -static void -screen_to_client (HWND hwnd, POINT screen_pt, POINT *client_pt) -{ - *client_pt = screen_pt; - ScreenToClient (hwnd, client_pt); -} - -static GdkWindow * -gdk_device_virtual_window_at_position (GdkDevice *device, - gdouble *win_x, - gdouble *win_y, - GdkModifierType *mask, - gboolean get_toplevel) -{ - GdkWindow *window = NULL; - POINT screen_pt, client_pt; - HWND hwnd, hwndc; - RECT rect; - - GetCursorPos (&screen_pt); - - if (get_toplevel) - { - /* Only consider visible children of the desktop to avoid the various - * non-visible windows you often find on a running Windows box. These - * might overlap our windows and cause our walk to fail. As we assume - * WindowFromPoint() can find our windows, we follow similar logic - * here, and ignore invisible and disabled windows. - */ - hwnd = GetDesktopWindow (); - do { - window = gdk_win32_handle_table_lookup (hwnd); - - if (window != NULL && - GDK_WINDOW_TYPE (window) != GDK_WINDOW_ROOT && - GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) - break; - - screen_to_client (hwnd, screen_pt, &client_pt); - hwndc = ChildWindowFromPointEx (hwnd, client_pt, CWP_SKIPDISABLED | - CWP_SKIPINVISIBLE); - - /* Verify that we're really inside the client area of the window */ - if (hwndc != hwnd) - { - GetClientRect (hwndc, &rect); - screen_to_client (hwndc, screen_pt, &client_pt); - if (!PtInRect (&rect, client_pt)) - hwndc = hwnd; - } - - } while (hwndc != hwnd && (hwnd = hwndc, 1)); - - } - else - { - hwnd = WindowFromPoint (screen_pt); - - /* Verify that we're really inside the client area of the window */ - GetClientRect (hwnd, &rect); - screen_to_client (hwnd, screen_pt, &client_pt); - if (!PtInRect (&rect, client_pt)) - hwnd = NULL; - - /* If we didn't hit any window at that point, return the desktop */ - if (hwnd == NULL) - { - if (win_x) - *win_x = screen_pt.x + _gdk_offset_x; - if (win_y) - *win_y = screen_pt.y + _gdk_offset_y; - return _gdk_root; - } - - window = gdk_win32_handle_table_lookup (hwnd); - } - - if (window && (win_x || win_y)) - { - if (win_x) - *win_x = client_pt.x; - if (win_y) - *win_y = client_pt.y; - } - - return window; -} - -static void -gdk_device_virtual_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask) -{ -} +} + +static void +screen_to_client (HWND hwnd, POINT screen_pt, POINT *client_pt) +{ + *client_pt = screen_pt; + ScreenToClient (hwnd, client_pt); +} + +static GdkWindow * +gdk_device_virtual_window_at_position (GdkDevice *device, + gdouble *win_x, + gdouble *win_y, + GdkModifierType *mask, + gboolean get_toplevel) +{ + GdkWindow *window = NULL; + POINT screen_pt, client_pt; + HWND hwnd, hwndc; + RECT rect; + + GetCursorPos (&screen_pt); + + if (get_toplevel) + { + /* Only consider visible children of the desktop to avoid the various + * non-visible windows you often find on a running Windows box. These + * might overlap our windows and cause our walk to fail. As we assume + * WindowFromPoint() can find our windows, we follow similar logic + * here, and ignore invisible and disabled windows. + */ + hwnd = GetDesktopWindow (); + do { + window = gdk_win32_handle_table_lookup (hwnd); + + if (window != NULL && + GDK_WINDOW_TYPE (window) != GDK_WINDOW_ROOT && + GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) + break; + + screen_to_client (hwnd, screen_pt, &client_pt); + hwndc = ChildWindowFromPointEx (hwnd, client_pt, CWP_SKIPDISABLED | + CWP_SKIPINVISIBLE); + + /* Verify that we're really inside the client area of the window */ + if (hwndc != hwnd) + { + GetClientRect (hwndc, &rect); + screen_to_client (hwndc, screen_pt, &client_pt); + if (!PtInRect (&rect, client_pt)) + hwndc = hwnd; + } + + } while (hwndc != hwnd && (hwnd = hwndc, 1)); + + } + else + { + hwnd = WindowFromPoint (screen_pt); + + /* Verify that we're really inside the client area of the window */ + GetClientRect (hwnd, &rect); + screen_to_client (hwnd, screen_pt, &client_pt); + if (!PtInRect (&rect, client_pt)) + hwnd = NULL; + + /* If we didn't hit any window at that point, return the desktop */ + if (hwnd == NULL) + { + if (win_x) + *win_x = screen_pt.x + _gdk_offset_x; + if (win_y) + *win_y = screen_pt.y + _gdk_offset_y; + return _gdk_root; + } + + window = gdk_win32_handle_table_lookup (hwnd); + } + + if (window && (win_x || win_y)) + { + if (win_x) + *win_x = client_pt.x; + if (win_y) + *win_y = client_pt.y; + } + + return window; +} + +static void +gdk_device_virtual_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask) +{ +} diff --git a/gdk/win32/gdkdevice-virtual.h b/gdk/win32/gdkdevice-virtual.h index e552a5d2fc..e44e7339b8 100644 --- a/gdk/win32/gdkdevice-virtual.h +++ b/gdk/win32/gdkdevice-virtual.h @@ -1,54 +1,54 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#ifndef __GDK_DEVICE_VIRTUAL_H__ -#define __GDK_DEVICE_VIRTUAL_H__ - -#include - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_VIRTUAL (gdk_device_virtual_get_type ()) -#define GDK_DEVICE_VIRTUAL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_VIRTUAL, GdkDeviceVirtual)) -#define GDK_DEVICE_VIRTUAL_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_VIRTUAL, GdkDeviceVirtualClass)) -#define GDK_IS_DEVICE_VIRTUAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_VIRTUAL)) -#define GDK_IS_DEVICE_VIRTUAL_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_VIRTUAL)) -#define GDK_DEVICE_VIRTUAL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_VIRTUAL, GdkDeviceVirtualClass)) - -typedef struct _GdkDeviceVirtual GdkDeviceVirtual; -typedef struct _GdkDeviceVirtualClass GdkDeviceVirtualClass; - -struct _GdkDeviceVirtual -{ - GdkDevice parent_instance; - GdkDevice *active_device; -}; - -struct _GdkDeviceVirtualClass -{ - GdkDeviceClass parent_class; -}; - -GType gdk_device_virtual_get_type (void) G_GNUC_CONST; - -void _gdk_device_virtual_set_active (GdkDevice *device, - GdkDevice *new_active); - - -G_END_DECLS - -#endif /* __GDK_DEVICE_VIRTUAL_H__ */ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __GDK_DEVICE_VIRTUAL_H__ +#define __GDK_DEVICE_VIRTUAL_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_DEVICE_VIRTUAL (gdk_device_virtual_get_type ()) +#define GDK_DEVICE_VIRTUAL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_VIRTUAL, GdkDeviceVirtual)) +#define GDK_DEVICE_VIRTUAL_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_VIRTUAL, GdkDeviceVirtualClass)) +#define GDK_IS_DEVICE_VIRTUAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_VIRTUAL)) +#define GDK_IS_DEVICE_VIRTUAL_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_VIRTUAL)) +#define GDK_DEVICE_VIRTUAL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_VIRTUAL, GdkDeviceVirtualClass)) + +typedef struct _GdkDeviceVirtual GdkDeviceVirtual; +typedef struct _GdkDeviceVirtualClass GdkDeviceVirtualClass; + +struct _GdkDeviceVirtual +{ + GdkDevice parent_instance; + GdkDevice *active_device; +}; + +struct _GdkDeviceVirtualClass +{ + GdkDeviceClass parent_class; +}; + +GType gdk_device_virtual_get_type (void) G_GNUC_CONST; + +void _gdk_device_virtual_set_active (GdkDevice *device, + GdkDevice *new_active); + + +G_END_DECLS + +#endif /* __GDK_DEVICE_VIRTUAL_H__ */