• Martin Rudalics's avatar
    Fix some problems with moving and resizing child frames · c49d379f
    Martin Rudalics authored
    (1) Provide new option 'x-gtk-resize-child-frames' which allows
    to either hide a child frame during resizing or asks GTK to
    resize it "immediately".  This is needed because desktops like
    GNOME shell otherwise won't allow resizing child frames at all.
    (2) Do not try to synchronize the position of a child frame
    after moving it.  Needed because the present implementation
    introduces a 0.5 secs delay which makes dragging child frames
    virtually impossible with Lucid and Motif toolkits on desktops
    like GNOME shell that use invisible outer frame borders.
    
    For further information see the thread starting with
    https://lists.gnu.org/archive/html/emacs-devel/2020-01/msg00343.html
    
    * src/frame.c (syms_of_frame): New symbol Qxg_frame_set_char_size_4.
    * src/gtkutil.c (xg_frame_set_char_size): Hide child frame
    during resizing when 'x-gtk-resize-child-frames' equals 'hide'.
    * src/xfns.c (x_set_parent_frame, Fx_create_frame): Set
    gtk_container_resize_mode to GTK_RESIZE_IMMEDIATE for child
    frames when'x-gtk-resize-child-frames' equals 'resize-mode'.
    (Fx_gtk_debug): New function to toggle interactive GTK debugging
    from within Emacs.
    (syms_of_xfns): New symbols Qhide and Qresize_mode.
    (x-gtk-resize-child-frames): New option that allows to resize
    child frames on desktops like GNOME shell (with the mutter WM)
    that otherwise refuse to resize them.
    * src/xterm.c (x_set_offset): Don't x_sync_with_move for child
    frames, it makes moving child frames virtually impossible with
    the Lucid and Motif toolkits.
    c49d379f
xfns.c 255 KB