forked from AuroraMiddleware/gtk
win32: Remove all uses of get_root_window
This is following similar changes done in the x11 and broadway backends, but it has not been built. Some fixups may be needed.
This commit is contained in:
parent
77efc60a15
commit
e2682e62a8
@ -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);
|
||||
|
@ -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]);
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user