Add a vfunc for _gdk_window_impl_new
This commit is contained in:
parent
d5803fa9b2
commit
126212b470
@ -2517,3 +2517,21 @@ _gdk_display_event_data_free (GdkDisplay *display,
|
||||
{
|
||||
GDK_DISPLAY_GET_CLASS (display)->event_data_free (display, event);
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_display_create_window_impl (GdkDisplay *display,
|
||||
GdkWindow *window,
|
||||
GdkWindow *real_parent,
|
||||
GdkScreen *screen,
|
||||
GdkEventMask event_mask,
|
||||
GdkWindowAttr *attributes,
|
||||
gint attributes_mask)
|
||||
{
|
||||
GDK_DISPLAY_GET_CLASS (display)->create_window_impl (display,
|
||||
window,
|
||||
real_parent,
|
||||
screen,
|
||||
event_mask,
|
||||
attributes,
|
||||
attributes_mask);
|
||||
}
|
||||
|
@ -21,6 +21,7 @@
|
||||
#define __GDK_DISPLAY_PRIVATE_H__
|
||||
|
||||
#include "gdkdisplay.h"
|
||||
#include "gdkwindow.h"
|
||||
#include "gdkcursor.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
@ -182,6 +183,13 @@ struct _GdkDisplayClass
|
||||
GdkEvent *new_event);
|
||||
void (*event_data_free) (GdkDisplay *display,
|
||||
GdkEvent *event);
|
||||
void (*create_window_impl) (GdkDisplay *display,
|
||||
GdkWindow *window,
|
||||
GdkWindow *real_parent,
|
||||
GdkScreen *screen,
|
||||
GdkEventMask event_mask,
|
||||
GdkWindowAttr *attributes,
|
||||
gint attributes_mask);
|
||||
|
||||
/* Signals */
|
||||
void (*closed) (GdkDisplay *display,
|
||||
@ -234,6 +242,13 @@ void _gdk_display_event_data_copy (GdkDisplay *display
|
||||
GdkEvent *new_event);
|
||||
void _gdk_display_event_data_free (GdkDisplay *display,
|
||||
GdkEvent *event);
|
||||
void _gdk_display_create_window_impl (GdkDisplay *display,
|
||||
GdkWindow *window,
|
||||
GdkWindow *real_parent,
|
||||
GdkScreen *screen,
|
||||
GdkEventMask event_mask,
|
||||
GdkWindowAttr *attributes,
|
||||
gint attributes_mask);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -1276,6 +1276,7 @@ gdk_window_new (GdkWindow *parent,
|
||||
{
|
||||
GdkWindow *window;
|
||||
GdkScreen *screen;
|
||||
GdkDisplay *display;
|
||||
int x, y;
|
||||
gboolean native;
|
||||
GdkEventMask event_mask;
|
||||
@ -1425,10 +1426,11 @@ gdk_window_new (GdkWindow *parent,
|
||||
}
|
||||
else if (native)
|
||||
{
|
||||
display = gdk_screen_get_display (screen);
|
||||
event_mask = get_native_event_mask (window);
|
||||
|
||||
/* Create the impl */
|
||||
_gdk_window_impl_new (window, real_parent, screen, event_mask, attributes, attributes_mask);
|
||||
_gdk_display_create_window_impl (display, window, real_parent, screen, event_mask, attributes, attributes_mask);
|
||||
window->impl_window = window;
|
||||
|
||||
/* This will put the native window topmost in the native parent, which may
|
||||
@ -1720,6 +1722,7 @@ gdk_window_ensure_native (GdkWindow *window)
|
||||
{
|
||||
GdkWindow *impl_window;
|
||||
GdkWindowImpl *new_impl, *old_impl;
|
||||
GdkDisplay *display;
|
||||
GdkScreen *screen;
|
||||
GdkWindow *above;
|
||||
GList listhead;
|
||||
@ -1745,9 +1748,11 @@ gdk_window_ensure_native (GdkWindow *window)
|
||||
gdk_window_drop_cairo_surface (window);
|
||||
|
||||
screen = gdk_window_get_screen (window);
|
||||
display = gdk_screen_get_display (screen);
|
||||
|
||||
old_impl = window->impl;
|
||||
_gdk_window_impl_new (window, window->parent,
|
||||
_gdk_display_create_window_impl (display,
|
||||
window, window->parent,
|
||||
screen,
|
||||
get_native_event_mask (window),
|
||||
NULL, 0);
|
||||
|
@ -2726,5 +2726,6 @@ _gdk_display_x11_class_init (GdkDisplayX11Class * class)
|
||||
display_class->notify_startup_complete = gdk_x11_display_notify_startup_complete;
|
||||
display_class->event_data_copy = gdk_x11_display_event_data_copy;
|
||||
display_class->event_data_free = gdk_x11_display_event_data_free;
|
||||
display_class->create_window_impl = _gdk_x11_display_create_window_impl;
|
||||
}
|
||||
|
||||
|
@ -180,6 +180,13 @@ void _gdk_x11_display_get_maximal_cursor_size (GdkDisplay *display,
|
||||
guint *height);
|
||||
void _gdk_x11_display_before_process_all_updates (GdkDisplay *display);
|
||||
void _gdk_x11_display_after_process_all_updates (GdkDisplay *display);
|
||||
void _gdk_x11_display_create_window_impl (GdkDisplay *display,
|
||||
GdkWindow *window,
|
||||
GdkWindow *real_parent,
|
||||
GdkScreen *screen,
|
||||
GdkEventMask event_mask,
|
||||
GdkWindowAttr *attributes,
|
||||
gint attributes_mask);
|
||||
|
||||
void _gdk_x11_precache_atoms (GdkDisplay *display,
|
||||
const gchar * const *atom_names,
|
||||
|
@ -677,7 +677,8 @@ setup_toplevel_window (GdkWindow *window,
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_window_impl_new (GdkWindow *window,
|
||||
_gdk_x11_display_create_window_impl (GdkDisplay *display,
|
||||
GdkWindow *window,
|
||||
GdkWindow *real_parent,
|
||||
GdkScreen *screen,
|
||||
GdkEventMask event_mask,
|
||||
@ -699,9 +700,9 @@ _gdk_window_impl_new (GdkWindow *window,
|
||||
unsigned int class;
|
||||
const char *title;
|
||||
|
||||
screen_x11 = GDK_SCREEN_X11 (screen);
|
||||
display_x11 = GDK_DISPLAY_X11 (display);
|
||||
xparent = GDK_WINDOW_XID (real_parent);
|
||||
display_x11 = GDK_DISPLAY_X11 (GDK_SCREEN_DISPLAY (screen));
|
||||
screen_x11 = GDK_SCREEN_X11 (screen);
|
||||
|
||||
impl = g_object_new (GDK_TYPE_WINDOW_IMPL_X11, NULL);
|
||||
window->impl = GDK_WINDOW_IMPL (impl);
|
||||
|
Loading…
Reference in New Issue
Block a user