X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkplug.c;h=01fc9799e5225122b89be82f71bcc7932ae11edb;hb=0cc688aa92b8fe5452b63fb49c51204498a2988b;hp=1d4240d0c394b02bd4b81c391ec5c8898389b2b6;hpb=be152f9b6196849c99c54afe5a0f651d08bf4626;p=~andy%2Fgtk
diff --git a/gtk/gtkplug.c b/gtk/gtkplug.c
index 1d4240d0c..01fc9799e 100644
--- a/gtk/gtkplug.c
+++ b/gtk/gtkplug.c
@@ -12,8 +12,7 @@
* 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, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * License along with this library. If not, see .Free
*/
/* By Owen Taylor 98/4/4 */
@@ -248,7 +247,6 @@ gtk_plug_init (GtkPlug *plug)
/**
* gtk_plug_handle_modality_on:
- *
* @plug: a #GtkPlug
*
* Called from the GtkPlug backend when the corresponding socket has
@@ -272,7 +270,6 @@ gtk_plug_handle_modality_on (GtkPlug *plug)
/**
* gtk_plug_handle_modality_off:
- *
* @plug: a #GtkPlug
*
* Called from the GtkPlug backend when the corresponding socket has
@@ -444,16 +441,16 @@ _gtk_plug_add_to_socket (GtkPlug *plug,
g_signal_emit_by_name (socket_, "plug-added");
}
-/**
- * _gtk_plug_send_delete_event:
+/*
+ * gtk_plug_send_delete_event:
* @widget: a #GtkWidget
*
* Send a GDK_DELETE event to the @widget and destroy it if
* necessary. Internal GTK function, called from this file or the
* backend-specific GtkPlug implementation.
*/
-void
-_gtk_plug_send_delete_event (GtkWidget *widget)
+static void
+gtk_plug_send_delete_event (GtkWidget *widget)
{
GdkEvent *event = gdk_event_new (GDK_DELETE);
@@ -533,7 +530,7 @@ _gtk_plug_remove_from_socket (GtkPlug *plug,
gtk_widget_destroy (GTK_WIDGET (socket_));
if (window)
- _gtk_plug_send_delete_event (widget);
+ gtk_plug_send_delete_event (widget);
g_object_unref (plug);
@@ -680,7 +677,7 @@ gtk_plug_unrealize (GtkWidget *widget)
if (priv->socket_window != NULL)
{
- gdk_window_set_user_data (priv->socket_window, NULL);
+ gtk_widget_unregister_window (widget, priv->socket_window);
g_object_unref (priv->socket_window);
priv->socket_window = NULL;
@@ -720,7 +717,6 @@ xembed_set_info (GdkWindow *window,
/**
* gtk_plug_focus_first_last:
- *
* @plug: a #GtkPlug
* @direction: a direction
*
@@ -883,7 +879,7 @@ gtk_plug_filter_func (GdkXEvent *gdk_xevent,
{
GtkWidget *widget = GTK_WIDGET (plug);
- gdk_window_set_user_data (priv->socket_window, NULL);
+ gtk_widget_unregister_window (widget, priv->socket_window);
g_object_unref (priv->socket_window);
priv->socket_window = NULL;
@@ -899,7 +895,7 @@ gtk_plug_filter_func (GdkXEvent *gdk_xevent,
if (xre->parent == GDK_WINDOW_XID (gdk_screen_get_root_window (screen)))
{
GTK_NOTE (PLUGSOCKET, g_message ("GtkPlug: calling gtk_plug_send_delete_event()"));
- _gtk_plug_send_delete_event (widget);
+ gtk_plug_send_delete_event (widget);
g_object_notify (G_OBJECT (plug), "embedded");
}
@@ -986,6 +982,10 @@ gtk_plug_filter_func (GdkXEvent *gdk_xevent,
gdk_event_set_device (event, keyboard);
keymap = gdk_keymap_get_for_display (display);
+
+ event->key.group = gdk_x11_keymap_get_group_for_state (keymap, xevent->xkey.state);
+ event->key.is_modifier = gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode);
+
gdk_keymap_translate_keyboard_state (keymap,
event->key.hardware_keycode,
event->key.state,
@@ -1000,10 +1000,6 @@ gtk_plug_filter_func (GdkXEvent *gdk_xevent,
event->key.length = 0;
event->key.string = g_strdup ("");
- /* FIXME: These should be filled in properly */
- event->key.group = 0;
- event->key.is_modifier = FALSE;
-
return_val = GDK_FILTER_TRANSLATE;
}
}
@@ -1092,12 +1088,10 @@ gtk_plug_realize (GtkWidget *widget)
gtk_widget_set_window (widget, gdk_window);
}
- gdk_window_set_user_data (gdk_window, window);
+ gtk_widget_register_window (widget, gdk_window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget),
gdk_window);
-
- gdk_window_enable_synchronized_configure (gdk_window);
}
static void