X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkplug.c;h=01fc9799e5225122b89be82f71bcc7932ae11edb;hb=3b2182e711ace4a2d6843848208224cd7525d530;hp=1d4240d0c394b02bd4b81c391ec5c8898389b2b6;hpb=432b7ee2bc0d2b34bd807e3ef76dab24ff2de17d;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