(set-frame-configuration): Assign name parameter only
authorMartin Rudalics <rudalics@gmx.at>
Fri, 12 Oct 2007 08:49:20 +0000 (08:49 +0000)
committerMartin Rudalics <rudalics@gmx.at>
Fri, 12 Oct 2007 08:49:20 +0000 (08:49 +0000)
if it has been set explicitly before.

admin/FOR-RELEASE
lisp/ChangeLog
lisp/frame.el
src/macfns.c
src/w32fns.c
src/xfns.c

index 6cc5333..f31c4d0 100644 (file)
@@ -71,11 +71,6 @@ http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00138.html
 http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01793.html
 [jpw@pobox.com has a patch]
 
-** Frame title no more updated after calling `set-frame-configuration'
-Report by Sebastien Rocca Serra <sroccaserra@gmail.com> on emacs-devel
-from 2007-08-30.  [martin rudalics has a patch]
-http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01632.html
-
 * FIXES FOR EMACS 22.3
 
 Here we list any small fixes that arrived too late for Emacs 22.2, but
index 9fd351c..0f16636 100644 (file)
@@ -1,5 +1,8 @@
 2007-10-12  Martin Rudalics  <rudalics@gmx.at>
 
+       * frame.el (set-frame-configuration): Assign name parameter only
+       if it has been set explicitly before.
+
        * window.el (handle-select-window): Revert part of 2007-10-06
        change setting the input focus.
 
index a169a8e..cbdfa45 100644 (file)
@@ -807,8 +807,15 @@ is given and non-nil, the unwanted frames are iconified instead."
                        ;; Since we can't set a frame's minibuffer status,
                        ;; we might as well omit the parameter altogether.
                        (let* ((parms (nth 1 parameters))
-                              (mini (assq 'minibuffer parms)))
-                         (if mini (setq parms (delq mini parms)))
+                              (mini (assq 'minibuffer parms))
+                              (name (assq 'name parms))
+                              (explicit-name (cdr (assq 'explicit-name parms))))
+                         (when mini (setq parms (delq mini parms)))
+                         ;; Leave name in iff it was set explicitly.
+                         ;; This should fix the behavior reported in
+                         ;; http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01632.html
+                         (when (and name (not explicit-name))
+                           (setq parms (delq name parms)))
                          parms))
                       (set-window-configuration (nth 2 parameters)))
                   (setq frames-to-delete (cons frame frames-to-delete))))))
index 8dff77c..1139158 100644 (file)
@@ -1855,15 +1855,7 @@ x_implicitly_set_name (f, arg, oldval)
 }
 \f
 /* Change the title of frame F to NAME.
-   If NAME is nil, use the frame name as the title.
-
-   If EXPLICIT is non-zero, that indicates that lisp code is setting the
-       name; if NAME is a string, set F's name to NAME and set
-       F->explicit_name; if NAME is Qnil, then clear F->explicit_name.
-
-   If EXPLICIT is zero, that indicates that Emacs redisplay code is
-       suggesting a new name, which lisp code should override; if
-       F->explicit_name is set, ignore the new name; otherwise, set it.  */
+   If NAME is nil, use the frame name as the title.  */
 
 void
 x_set_title (f, name, old_name)
index d260b0d..e8a2dc9 100644 (file)
@@ -1937,15 +1937,7 @@ x_implicitly_set_name (f, arg, oldval)
 }
 \f
 /* Change the title of frame F to NAME.
-   If NAME is nil, use the frame name as the title.
-
-   If EXPLICIT is non-zero, that indicates that lisp code is setting the
-       name; if NAME is a string, set F's name to NAME and set
-       F->explicit_name; if NAME is Qnil, then clear F->explicit_name.
-
-   If EXPLICIT is zero, that indicates that Emacs redisplay code is
-       suggesting a new name, which lisp code should override; if
-       F->explicit_name is set, ignore the new name; otherwise, set it.  */
+   If NAME is nil, use the frame name as the title.  */
 
 void
 x_set_title (f, name, old_name)
index 80f2141..1367273 100644 (file)
@@ -1764,15 +1764,7 @@ x_implicitly_set_name (f, arg, oldval)
 }
 \f
 /* Change the title of frame F to NAME.
-   If NAME is nil, use the frame name as the title.
-
-   If EXPLICIT is non-zero, that indicates that lisp code is setting the
-       name; if NAME is a string, set F's name to NAME and set
-       F->explicit_name; if NAME is Qnil, then clear F->explicit_name.
-
-   If EXPLICIT is zero, that indicates that Emacs redisplay code is
-       suggesting a new name, which lisp code should override; if
-       F->explicit_name is set, ignore the new name; otherwise, set it.  */
+   If NAME is nil, use the frame name as the title.  */
 
 void
 x_set_title (f, name, old_name)