diff --git a/src/gtkutil.c b/src/gtkutil.c index 6822aeb4e32..3e4d6e076ff 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -1996,16 +1996,19 @@ xg_set_no_focus_on_map (struct frame *f, Lisp_Object no_focus_on_map) void xg_set_no_accept_focus (struct frame *f, Lisp_Object no_accept_focus) { + gboolean g_no_accept_focus = NILP (no_accept_focus) ? TRUE : FALSE; #ifdef HAVE_PGTK if (!FRAME_GTK_OUTER_WIDGET (f)) - return; + { + if (FRAME_WIDGET(f)) + gtk_widget_set_can_focus (FRAME_WIDGET(f), g_no_accept_focus); + return; + } #endif block_input (); if (FRAME_GTK_WIDGET (f)) { GtkWindow *gwin = GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)); - gboolean g_no_accept_focus = NILP (no_accept_focus) ? TRUE : FALSE; - gtk_window_set_accept_focus (gwin, g_no_accept_focus); } unblock_input (); diff --git a/src/pgtkterm.c b/src/pgtkterm.c index 75386ee6c39..978d4798d5f 100644 --- a/src/pgtkterm.c +++ b/src/pgtkterm.c @@ -4702,12 +4702,12 @@ pgtk_focus_frame (struct frame *f, bool noactivate) { struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (f); - GtkWidget *wid = FRAME_GTK_OUTER_WIDGET (f); + GtkWidget *wid = FRAME_WIDGET (f); if (dpyinfo->x_focus_frame != f && wid != NULL) { block_input (); - gtk_window_present (GTK_WINDOW (wid)); + gtk_widget_grab_focus(wid); unblock_input (); } } @@ -6460,12 +6460,11 @@ button_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data) if (FRAME_PARENT_FRAME (f) || (hf && frame_ancestor_p (f, hf))) { block_input (); -#if 0 - XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), - RevertToParent, CurrentTime); - if (FRAME_PARENT_FRAME (f)) - XRaiseWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f)); -#endif + gtk_widget_grab_focus(FRAME_GTK_WIDGET(f)); + if (FRAME_GTK_OUTER_WIDGET (f)) + { + gtk_window_present (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f))); + } unblock_input (); } }