Fix Win32 build
This commit is contained in:
@ -50,13 +50,15 @@ _gtk_plug_windowing_get_id (GtkPlug *plug)
|
||||
void
|
||||
_gtk_plug_windowing_realize_toplevel (GtkPlug *plug)
|
||||
{
|
||||
if (plug->socket_window)
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
|
||||
if (priv->socket_window)
|
||||
{
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_PARENT_NOTIFY,
|
||||
(WPARAM) GDK_WINDOW_HWND (GTK_WIDGET (plug)->window),
|
||||
GTK_WIN32_EMBED_PROTOCOL_VERSION);
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_EVENT_PLUG_MAPPED, 0, 0);
|
||||
}
|
||||
}
|
||||
@ -64,8 +66,10 @@ _gtk_plug_windowing_realize_toplevel (GtkPlug *plug)
|
||||
void
|
||||
_gtk_plug_windowing_map_toplevel (GtkPlug *plug)
|
||||
{
|
||||
if (plug->socket_window)
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
|
||||
if (priv->socket_window)
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_EVENT_PLUG_MAPPED,
|
||||
1, 0);
|
||||
}
|
||||
@ -73,8 +77,10 @@ _gtk_plug_windowing_map_toplevel (GtkPlug *plug)
|
||||
void
|
||||
_gtk_plug_windowing_unmap_toplevel (GtkPlug *plug)
|
||||
{
|
||||
if (plug->socket_window)
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
|
||||
if (priv->socket_window)
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_EVENT_PLUG_MAPPED,
|
||||
0, 0);
|
||||
}
|
||||
@ -82,8 +88,10 @@ _gtk_plug_windowing_unmap_toplevel (GtkPlug *plug)
|
||||
void
|
||||
_gtk_plug_windowing_set_focus (GtkPlug *plug)
|
||||
{
|
||||
if (plug->socket_window)
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
|
||||
if (priv->socket_window)
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_REQUEST_FOCUS,
|
||||
0, 0);
|
||||
}
|
||||
@ -93,8 +101,10 @@ _gtk_plug_windowing_add_grabbed_key (GtkPlug *plug,
|
||||
guint accelerator_key,
|
||||
GdkModifierType accelerator_mods)
|
||||
{
|
||||
if (plug->socket_window)
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
|
||||
if (priv->socket_window)
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_GRAB_KEY,
|
||||
accelerator_key, accelerator_mods);
|
||||
}
|
||||
@ -104,8 +114,10 @@ _gtk_plug_windowing_remove_grabbed_key (GtkPlug *plug,
|
||||
guint accelerator_key,
|
||||
GdkModifierType accelerator_mods)
|
||||
{
|
||||
if (plug->socket_window)
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
|
||||
if (priv->socket_window)
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_UNGRAB_KEY,
|
||||
accelerator_key, accelerator_mods);
|
||||
}
|
||||
@ -114,6 +126,7 @@ void
|
||||
_gtk_plug_windowing_focus_to_parent (GtkPlug *plug,
|
||||
GtkDirectionType direction)
|
||||
{
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
GtkWin32EmbedMessageType message = GTK_WIN32_EMBED_FOCUS_PREV;
|
||||
|
||||
switch (direction)
|
||||
@ -130,7 +143,7 @@ _gtk_plug_windowing_focus_to_parent (GtkPlug *plug,
|
||||
break;
|
||||
}
|
||||
|
||||
_gtk_win32_embed_send_focus_message (plug->socket_window, message, 0);
|
||||
_gtk_win32_embed_send_focus_message (priv->socket_window, message, 0);
|
||||
}
|
||||
|
||||
GdkFilterReturn
|
||||
@ -139,6 +152,7 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
|
||||
gpointer data)
|
||||
{
|
||||
GtkPlug *plug = GTK_PLUG (data);
|
||||
GtkPlugPrivate *priv = plug->priv;
|
||||
MSG *msg = (MSG *) gdk_xevent;
|
||||
GdkFilterReturn return_val = GDK_FILTER_CONTINUE;
|
||||
|
||||
@ -151,26 +165,26 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
|
||||
* crashes in testsocket.
|
||||
*/
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
if (!plug->same_app)
|
||||
if (!priv->same_app)
|
||||
{
|
||||
HWND parent = GetAncestor (msg->hwnd, GA_PARENT);
|
||||
gboolean was_embedded = plug->socket_window != NULL;
|
||||
gboolean was_embedded = priv->socket_window != NULL;
|
||||
GdkScreen *screen = gdk_drawable_get_screen (event->any.window);
|
||||
GdkDisplay *display = gdk_screen_get_display (screen);
|
||||
|
||||
GTK_NOTE (PLUGSOCKET, g_printerr ("WM_WINDOWPOSCHANGED: hwnd=%p GA_PARENT=%p socket_window=%p\n", msg->hwnd, parent, plug->socket_window));
|
||||
GTK_NOTE (PLUGSOCKET, g_printerr ("WM_WINDOWPOSCHANGED: hwnd=%p GA_PARENT=%p socket_window=%p\n", msg->hwnd, parent, priv->socket_window));
|
||||
g_object_ref (plug);
|
||||
if (was_embedded)
|
||||
{
|
||||
/* End of embedding protocol for previous socket */
|
||||
if (parent != GDK_WINDOW_HWND (plug->socket_window))
|
||||
if (parent != GDK_WINDOW_HWND (priv->socket_window))
|
||||
{
|
||||
GtkWidget *widget = GTK_WIDGET (plug);
|
||||
|
||||
GTK_NOTE (PLUGSOCKET, g_printerr ("was_embedded, current parent != socket_window\n"));
|
||||
gdk_window_set_user_data (plug->socket_window, NULL);
|
||||
g_object_unref (plug->socket_window);
|
||||
plug->socket_window = NULL;
|
||||
gdk_window_set_user_data (priv->socket_window, NULL);
|
||||
g_object_unref (priv->socket_window);
|
||||
priv->socket_window = NULL;
|
||||
|
||||
/* Emit a delete window, as if the user attempted to
|
||||
* close the toplevel. Only do this if we are being
|
||||
@ -196,27 +210,27 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
|
||||
/* Start of embedding protocol */
|
||||
|
||||
GTK_NOTE (PLUGSOCKET, g_printerr ("start of embedding\n"));
|
||||
plug->socket_window = gdk_window_lookup_for_display (display, (GdkNativeWindow) parent);
|
||||
if (plug->socket_window)
|
||||
priv->socket_window = gdk_window_lookup_for_display (display, (GdkNativeWindow) parent);
|
||||
if (priv->socket_window)
|
||||
{
|
||||
gpointer user_data = NULL;
|
||||
|
||||
GTK_NOTE (PLUGSOCKET, g_printerr ("already had socket_window\n"));
|
||||
gdk_window_get_user_data (plug->socket_window, &user_data);
|
||||
gdk_window_get_user_data (priv->socket_window, &user_data);
|
||||
|
||||
if (user_data)
|
||||
{
|
||||
g_warning (G_STRLOC "Plug reparented unexpectedly into window in the same process");
|
||||
plug->socket_window = NULL;
|
||||
priv->socket_window = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
g_object_ref (plug->socket_window);
|
||||
g_object_ref (priv->socket_window);
|
||||
}
|
||||
else
|
||||
{
|
||||
plug->socket_window = gdk_window_foreign_new_for_display (display, (GdkNativeWindow) parent);
|
||||
if (!plug->socket_window) /* Already gone */
|
||||
priv->socket_window = gdk_window_foreign_new_for_display (display, (GdkNativeWindow) parent);
|
||||
if (!priv->socket_window) /* Already gone */
|
||||
break;
|
||||
}
|
||||
|
||||
@ -231,9 +245,9 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
if (!plug->same_app && plug->socket_window)
|
||||
if (!priv->same_app && priv->socket_window)
|
||||
{
|
||||
_gtk_win32_embed_send (plug->socket_window,
|
||||
_gtk_win32_embed_send (priv->socket_window,
|
||||
GTK_WIN32_EMBED_PLUG_RESIZED,
|
||||
0, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user