diff options
-rw-r--r-- | gdk/win32/gdkdevice-win32.c | 42 | ||||
-rw-r--r-- | gdk/win32/gdkdevice-wintab.c | 42 | ||||
-rw-r--r-- | gdk/win32/gdkdevicemanager-win32.c | 10 | ||||
-rw-r--r-- | gdk/win32/gdkdisplay-win32.c | 8 | ||||
-rw-r--r-- | gdk/win32/gdkdnd-win32.c | 8 | ||||
-rw-r--r-- | gdk/win32/gdkevents-win32.c | 4 | ||||
-rw-r--r-- | gdk/win32/gdkproperty-win32.c | 2 | ||||
-rw-r--r-- | gdk/win32/gdkscreen-win32.c | 55 | ||||
-rw-r--r-- | gdk/win32/gdkwindow-win32.c | 7 |
9 files changed, 69 insertions, 109 deletions
diff --git a/gdk/win32/gdkdevice-win32.c b/gdk/win32/gdkdevice-win32.c index 10914e9dba..d0e9654318 100644 --- a/gdk/win32/gdkdevice-win32.c +++ b/gdk/win32/gdkdevice-win32.c @@ -108,30 +108,39 @@ gdk_device_win32_query_state (GdkDevice *device, { POINT point; HWND hwnd, hwndc; - GdkWindowImplWin32 *impl; + gint scale; - if (window == NULL) - window = gdk_win32_display_get_root_window (gdk_display_get_default ()); - impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + if (window) + { + scale = GDK_WINDOW_IMPL_WIN32 (window->impl)->window_scale; + hwnd = GDK_WINDOW_HWND (window); + } + else + { + GdkDisplay *display = gdk_device_get_display (device); + + scale = GDK_WIN32_SCREEN (GDK_WIN32_DISPLAY (display)->screen)->window_scale; + hwnd = NULL; + } - hwnd = GDK_WINDOW_HWND (window); GetCursorPos (&point); if (root_x) - *root_x = point.x / impl->window_scale; + *root_x = point.x / scale; if (root_y) - *root_y = point.y / impl->window_scale; + *root_y = point.y / scale; - ScreenToClient (hwnd, &point); + if (hwnd) + ScreenToClient (hwnd, &point); if (win_x) - *win_x = point.x / impl->window_scale; + *win_x = point.x / scale; if (win_y) - *win_y = point.y / impl->window_scale; + *win_y = point.y / scale; - if (window == gdk_win32_display_get_root_window (gdk_display_get_default ())) + if (window) { if (win_x) *win_x += _gdk_offset_x; @@ -146,7 +155,7 @@ gdk_device_win32_query_state (GdkDevice *device, *root_y += _gdk_offset_y; } - if (child_window) + if (hwnd && child_window) { hwndc = ChildWindowFromPoint (hwnd, point); @@ -247,15 +256,12 @@ _gdk_device_win32_window_at_position (GdkDevice *device, /* If we didn't hit any window at that point, return the desktop */ if (hwnd == NULL) { - window = gdk_win32_display_get_root_window (gdk_display_get_default ()); - impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - if (win_x) - *win_x = (screen_pt.x + _gdk_offset_x) / impl->window_scale; + *win_x = screen_pt.x + _gdk_offset_x; if (win_y) - *win_y = (screen_pt.y + _gdk_offset_y) / impl->window_scale; + *win_y = screen_pt.y + _gdk_offset_y; - return window; + return NULL; } window = gdk_win32_handle_table_lookup (hwnd); diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index 573f8daa52..8b5d321126 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -120,30 +120,40 @@ gdk_device_wintab_query_state (GdkDevice *device, POINT point; HWND hwnd, hwndc; GdkWindowImplWin32 *impl; + int scale; device_wintab = GDK_DEVICE_WINTAB (device); - if (window == NULL) - window = gdk_win32_display_get_root_window (gdk_display_get_default ()); - impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + if (window) + { + scale = GDK_WINDOW_IMPL_WIN32 (window->impl)->window_scale; + hwnd = GDK_WINDOW_HWND (window); + } + else + { + GdkDisplay *display = gdk_device_get_display (device); + + scale = GDK_WIN32_SCREEN (GDK_WIN32_DISPLAY (display)->screen)->window_scale; + hwnd = NULL; + } - hwnd = GDK_WINDOW_HWND (window); GetCursorPos (&point); if (root_x) - *root_x = point.x / impl->window_scale; + *root_x = point.x / scale; if (root_y) - *root_y = point.y / impl->window_scale; + *root_y = point.y / scale; - ScreenToClient (hwnd, &point); + if (hwn) + ScreenToClient (hwnd, &point); if (win_x) - *win_x = point.x / impl->window_scale; + *win_x = point.x / scale; if (win_y) - *win_y = point.y / impl->window_scale; + *win_y = point.y / scale; - if (window == gdk_win32_display_get_root_window (gdk_display_get_default ())) + if (!window) { if (win_x) *win_x += _gdk_offset_x; @@ -152,7 +162,7 @@ gdk_device_wintab_query_state (GdkDevice *device, *win_y += _gdk_offset_y; } - if (child_window) + if (hwnd && child_window) { hwndc = ChildWindowFromPoint (hwnd, point); @@ -217,18 +227,20 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab, gdouble *y) { GdkDevice *device; - GdkWindow *impl_window, *root_window; + GdkWindow *impl_window; gint root_x, root_y; gdouble temp_x, temp_y; gint i; + GdkDisplay *display; device = GDK_DEVICE (device_wintab); - root_window = gdk_win32_display_get_root_window (gdk_window_get_display (window)); impl_window = _gdk_window_get_impl_window (window); temp_x = temp_y = 0; gdk_window_get_origin (impl_window, &root_x, &root_y); + display = gdk_device_get_display (device); + for (i = 0; i < gdk_device_get_n_axes (device); i++) { GdkAxisUse use; @@ -246,8 +258,8 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab, else _gdk_device_translate_screen_coord (device, window, root_x, root_y, - gdk_window_get_width (root_window), - gdk_window_get_height (root_window), + GDK_WIN32_SCREEN (GDK_WIN32_DISPLAY (display)->screen)->width, + GDK_WIN32_SCREEN (GDK_WIN32_DISPLAY (display)->screen)->height, i, device_wintab->last_axis_data[i], &axes[i]); diff --git a/gdk/win32/gdkdevicemanager-win32.c b/gdk/win32/gdkdevicemanager-win32.c index fc05292c8c..69a3da6b83 100644 --- a/gdk/win32/gdkdevicemanager-win32.c +++ b/gdk/win32/gdkdevicemanager-win32.c @@ -353,7 +353,6 @@ static void wintab_init_check (GdkDeviceManagerWin32 *device_manager) { GdkDisplay *display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (device_manager)); - GdkWindow *root = gdk_win32_display_get_root_window (display); static gboolean wintab_initialized = FALSE; GdkDeviceWintab *device; WORD specversion; @@ -960,14 +959,13 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS; device_manager = GDK_DEVICE_MANAGER_WIN32 (gdk_display_get_device_manager (display)); G_GNUC_END_IGNORE_DEPRECATIONS; window = gdk_device_get_window_at_position (device_manager->core_pointer, &x, &y); - if (window == NULL) - window = gdk_win32_display_get_root_window (gdk_display_get_default ()); - g_object_ref (window); + if (window) + g_object_ref (window); GDK_NOTE (EVENTS_OR_INPUT, g_print ("gdk_input_other_event: window=%p %+d%+d\n", - GDK_WINDOW_HWND (window), x, y)); + window ? GDK_WINDOW_HWND (window) : NULL, x, y)); if (msg->message == WT_PACKET || msg->message == WT_CSRCHANGE) { @@ -1004,7 +1002,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS; window = g_object_ref (last_grab->window); } - if (window == gdk_win32_display_get_root_window (gdk_display_get_default ())) + if (window == NULL) { GDK_NOTE (EVENTS_OR_INPUT, g_print ("... is root\n")); return FALSE; diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c index e37e0c504f..04b2f778b7 100644 --- a/gdk/win32/gdkdisplay-win32.c +++ b/gdk/win32/gdkdisplay-win32.c @@ -619,7 +619,7 @@ inner_clipboard_window_procedure (HWND hwnd, GDK_NOTE (DND, g_print (" \n")); event = gdk_event_new (GDK_OWNER_CHANGE); - event->owner_change.window = gdk_win32_display_get_root_window (gdk_display_get_default ()); + event->owner_change.window = NULL; event->owner_change.reason = GDK_OWNER_CHANGE_NEW_OWNER; event->owner_change.selection = GDK_SELECTION_CLIPBOARD; event->owner_change.time = _gdk_win32_get_next_tick (0); @@ -1225,12 +1225,6 @@ gdk_win32_display_get_setting (GdkDisplay *display, value); } -GdkWindow * -gdk_win32_display_get_root_window (GdkDisplay *display) -{ - return gdk_win32_screen_get_root_window (GDK_WIN32_DISPLAY (display)->screen); -} - static void gdk_win32_display_class_init (GdkWin32DisplayClass *klass) { diff --git a/gdk/win32/gdkdnd-win32.c b/gdk/win32/gdkdnd-win32.c index 07c457f88b..3219df248d 100644 --- a/gdk/win32/gdkdnd-win32.c +++ b/gdk/win32/gdkdnd-win32.c @@ -729,11 +729,6 @@ idropsource_givefeedback (LPDROPSOURCE This, ctx->context->dest_window = NULL; } } - else - { - if (ctx->context->dest_window == NULL) - ctx->context->dest_window = g_object_ref (gdk_win32_display_get_root_window (gdk_display_get_default ())); - } return DRAGDROP_S_USEDEFAULTCURSORS; } @@ -1431,8 +1426,7 @@ gdk_dropfiles_filter (GdkXEvent *xev, context->protocol = GDK_DRAG_PROTO_WIN32_DROPFILES; context->is_source = FALSE; - context->source_window = gdk_win32_display_get_root_window (gdk_display_get_default ()); - g_object_ref (context->source_window); + context->source_window = NULL; context->dest_window = event->any.window; g_object_ref (context->dest_window); diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 9e21c68746..0df1805b40 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2160,9 +2160,7 @@ gdk_event_translate (MSG *msg, { /* Apply global filters */ - GdkFilterReturn result = apply_event_filters (window ? window : gdk_win32_display_get_root_window (display), - msg, - &_gdk_default_filters); + GdkFilterReturn result = apply_event_filters (window, msg, &_gdk_default_filters); /* If result is GDK_FILTER_CONTINUE, we continue as if nothing * happened. If it is GDK_FILTER_REMOVE or GDK_FILTER_TRANSLATE, diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c index 29e8fe5705..24e778d60e 100644 --- a/gdk/win32/gdkproperty-win32.c +++ b/gdk/win32/gdkproperty-win32.c @@ -295,7 +295,7 @@ _gdk_win32_window_delete_property (GdkWindow *window, if (property == _gdk_selection) _gdk_selection_property_delete (window); else if (property == _wm_transient_for) - gdk_window_set_transient_for (window, gdk_win32_display_get_root_window (gdk_window_get_display (window))); + gdk_window_set_transient_for (window, NULL); else { prop_name = gdk_atom_name (property); diff --git a/gdk/win32/gdkscreen-win32.c b/gdk/win32/gdkscreen-win32.c index 0ce999ce72..546c367b69 100644 --- a/gdk/win32/gdkscreen-win32.c +++ b/gdk/win32/gdkscreen-win32.c @@ -33,7 +33,8 @@ struct _GdkWin32Screen { GdkScreen parent_instance; - GdkWindow *root_window; + int width, height; + int window_scale; }; struct _GdkWin32ScreenClass @@ -66,61 +67,29 @@ init_root_window_size (GdkWin32Screen *screen) gdk_rectangle_union (&result, &rect, &result); } - screen->root_window->width = result.width; - screen->root_window->height = result.height; - root_impl = GDK_WINDOW_IMPL_WIN32 (screen->root_window->impl); - - root_impl->unscaled_width = result.width * root_impl->window_scale; - root_impl->unscaled_height = result.height * root_impl->window_scale; + screen->width = result.width; + screen->height = result.height; } static void init_root_window (GdkWin32Screen *screen_win32) { GdkScreen *screen; - GdkWindow *window; - GdkWindowImplWin32 *impl_win32; GdkWin32Display *win32_display; screen = GDK_SCREEN (screen_win32); - g_assert (screen_win32->root_window == NULL); - - window = _gdk_display_create_window (_gdk_display); - window->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_WIN32, NULL); - impl_win32 = GDK_WINDOW_IMPL_WIN32 (window->impl); - impl_win32->wrapper = window; - - window->impl_window = window; - - window->window_type = GDK_WINDOW_ROOT; - - screen_win32->root_window = window; - init_root_window_size (screen_win32); - window->x = 0; - window->y = 0; - window->abs_x = 0; - window->abs_y = 0; - /* width and height already initialised in init_root_window_size() */ - window->viewable = TRUE; win32_display = GDK_WIN32_DISPLAY (_gdk_display); if (win32_display->dpi_aware_type != PROCESS_DPI_UNAWARE) - impl_win32->window_scale = _gdk_win32_display_get_monitor_scale_factor (win32_display, - NULL, - impl_win32->handle, - NULL); + screen_win32->window_scale = _gdk_win32_display_get_monitor_scale_factor (win32_display, + NULL, + NULL, + NULL); else - impl_win32->window_scale = 1; - - impl_win32->unscaled_width = window->width * impl_win32->window_scale; - impl_win32->unscaled_height = window->height * impl_win32->window_scale; - - gdk_win32_handle_table_insert ((HANDLE *) &impl_win32->handle, window); - - GDK_NOTE (MISC, g_print ("screen->root_window=%p\n", window)); + screen_win32->window_scale = 1; } static void @@ -140,12 +109,6 @@ _gdk_win32_screen_on_displaychange_event (GdkWin32Screen *screen) init_root_window_size (screen); } -GdkWindow * -gdk_win32_screen_get_root_window (GdkScreen *screen) -{ - return GDK_WIN32_SCREEN (screen)->root_window; -} - static void gdk_win32_screen_finalize (GObject *object) { diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index bef238cf20..ae1f24311d 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -465,9 +465,6 @@ _gdk_win32_window_enable_transparency (GdkWindow *window) if (!gdk_display_is_composited (gdk_window_get_display (window))) return FALSE; - if (window == gdk_win32_display_get_root_window (gdk_window_get_display (window))) - return FALSE; - thiswindow = GDK_WINDOW_HWND (window); /* Blurbehind only works on toplevel windows */ @@ -744,9 +741,7 @@ _gdk_win32_display_create_window_impl (GdkDisplay *display, case GDK_WINDOW_TEMP: /* A temp window is not necessarily a top level window */ - dwStyle = (real_parent == NULL || - gdk_win32_display_get_root_window (display) == real_parent) ? - WS_POPUP : WS_CHILDWINDOW; + dwStyle = real_parent == NULL ? WS_POPUP : WS_CHILDWINDOW; dwStyle |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS; dwExStyle |= WS_EX_TOOLWINDOW | WS_EX_TOPMOST; offset_x = _gdk_offset_x; |