Subject: bug#25851: 25.2; GTK warning when starting Emacs when desktop file has more than one frame

From: [email-masked] (N. Jackson)
Date: Mon, 27 Feb 2017 12:56:16 -0500

At 09:04 +0100 on Monday 2017-02-27, martin rudalics wrote:
>
> Thanks. Please try now with a small init file containing a
> ‘make-frame’ call with the parameters from these attachments.
> For your first entry I'd suggest to start with bisecting the
> parameter list in calls like
>
> (make-frame
>  '((font-backend xft x)
>    (font . "-Bits-Bitstream Vera Sans Mono-normal-normal-normal-*-11-*-*-*-m-0-iso10646-1")
>    (font-parameter)
>    (border-width . 0)
>    (internal-border-width . 0)
>    (right-divider-width . 0)
>    (bottom-divider-width . 0)
>    (vertical-scroll-bars . right)
>    (horizontal-scroll-bars)
>    (foreground-color . "wheat")
>    (background-color . "black")
>    (mouse-color . "black")
>    (border-color . "black")
>    (screen-gamma)
>    (line-spacing)
>    (left-fringe . 8)
>    (right-fringe . 0)
>    (scroll-bar-foreground)
>    (scroll-bar-background)
>    (menu-bar-lines . 0)
>    (tool-bar-lines . 0)
>    (title)
>    (wait-for-wm . t)
>    (tool-bar-position . top)
>    (icon-type . t)
>    (auto-raise)
>    (auto-lower)
>    (cursor-type . box)
>    (scroll-bar-width . 16)
>    (scroll-bar-height . 0)
>    (alpha)
>    (fullscreen . fullboth)
>    (display-type . color)
>    (background-mode . dark)
>    (cursor-color . "thistle")
>    (visibility . t)
>    (sticky)
>    (frameset--id . "8B00-9439-83D1-B48B")
>    (frameset--mini t)
>    (modeline . t)
>    (minibuffer . t)
>    (unsplittable)
>    (icon-name)
>    (display . ":0")
>    (explicit-name)
>    (fullscreen-restore . maximized)
>    (height . 59)
>    (width . 191)
>    (left . 0)
>    (top . 0)))
>

>From `emacs -Q' the above call to `make-frame' causes the GTK
warning message.

After bisecting, I find that if I omit the last two lines, the GTK
warning is not emitted. Either or both of these two lines is
sufficient to produce the warning message:

  $ src/emacs -Q --eval "(make-frame '((left . 0)))"

  (emacs:13000): Gtk-WARNING **: gtk_window_parse_geometry() called on a window with no visible children; the window should be set up before gtk_window_parse_geometry() is called.

  $ src/emacs -Q --eval "(make-frame '((top . 0)))"    

  (emacs:13008): Gtk-WARNING **: gtk_window_parse_geometry() called on a window with no visible children; the window should be set up before gtk_window_parse_geometry() is called.

  $ src/emacs -Q --eval "(make-frame '((left . 0)(top . 0)))"

  (emacs:13020): Gtk-WARNING **: gtk_window_parse_geometry() called on a window with no visible children; the window should be set up before gtk_window_parse_geometry() is called.

And finally,

  $ src/emacs -Q --eval "(make-frame)"

produces no warning.

> IIUC you saved two frames.  Please try whether you can reproduce the
> problem with one frame only.  If not, you need two ‘make-frame’ calls.

There is no warning message issued for the first/main Emacs frame.
So there is one less warning message than there are frames
restored from the desktop file. So in my previous examples I had
three frames and two warning messages. I hope that helps clarify
things.

N.