unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: 16028@debbugs.gnu.org
Subject: bug#16028: 24.3.50; Latest build completely breaks my thumnail frames code
Date: Mon, 2 Dec 2013 07:51:59 -0800 (PST)	[thread overview]
Message-ID: <8dee88e8-6b12-4822-9586-e013328f2ddc@default> (raw)

I cannot use the latest Emacs build at all.  I extensively use thumbnail
frames, which are tiny frames, fully functional, made by shrinking the
frame's font size.  FWIW, this is very important to me.

The code is here:
http://www.emacswiki.org/emacs-en/download/thumb-frm.el
http://www.emacswiki.org/emacs-en/download/frame-cmds.el
http://www.emacswiki.org/emacs-en/download/frame-fns.el

The code is simple.  But presumably you need not examine it.  Just
please, ASAP, restore the link between font size and frame size.

Now, when I hit C-z to thumbify a frame, the font is shrunk, but the
frame is not shrunk accordingly.

The core of the code is this:

(defun enlarge-font (&optional increment frame)
  "Increase size of font in FRAME by INCREMENT.
Interactively, INCREMENT is given by the prefix argument.
Optional FRAME parameter defaults to current frame."
  (interactive "p")
  (setq frame  (or frame  (selected-frame)))
  (let ((fontname  (cdr (assq 'font (frame-parameters frame))))
        (count     enlarge-font-tries))
    (setq fontname  (enlarged-font-name fontname frame increment))
    (while (and (not (x-list-fonts fontname))
                (wholenump (setq count  (1- count))))
      (setq fontname  (enlarged-font-name fontname frame increment)))
    (unless (x-list-fonts fontname) (error "Cannot change font size"))
    (modify-frame-parameters frame (list (cons 'font fontname)))
    ;; Update faces that want a bold or italic version of the default font.
    (when (< emacs-major-version 21) (frame-update-faces frame))))

(defun enlarged-font-name (fontname frame increment)
  "FONTNAME, after enlarging font size of FRAME by INCREMENT.
FONTNAME is the font of FRAME."
  (when (query-fontset fontname)
    (let ((ascii  (assq 'ascii (aref (fontset-info fontname frame) 2))))
      (when ascii (setq fontname  (nth 2 ascii)))))
  (let ((xlfd-fields  (x-decompose-font-name fontname)))
    (unless xlfd-fields (error "Cannot decompose font name"))
    (let ((new-size  (+ (string-to-number
                         (aref xlfd-fields xlfd-regexp-pixelsize-subnum))
                        increment)))
      (unless (> new-size 0) (signal 'font-too-small (list new-size)))
      (aset xlfd-fields xlfd-regexp-pixelsize-subnum
            (number-to-string new-size)))
    ;; Set point size & width to "*", so frame width adjusts to new font
    (aset xlfd-fields xlfd-regexp-pointsize-subnum "*")
    (aset xlfd-fields xlfd-regexp-avgwidth-subnum "*")
    (x-compose-font-name xlfd-fields)))

Though not needed to see the problem, here is the thumbify code that
makes use of `enlarge-font':

(defun thumfr-thumbify-frame (&optional frame)
  "Create a thumbnail version of FRAME (default: selected frame).
Variable `thumfr-frame-parameters' is used to determine
which frame parameters (such as `menu-bar-lines') to remove."
  (interactive)
  (setq frame  (or frame (selected-frame)))
  (let* ((tf-params      (frame-parameter frame 'thumfr-non-thumbnail-frame))
         (non-tf-params  (thumfr-remove-if #'thumfr-thumfr-parameter-p
                                           (frame-parameters frame))))
    (when thumfr-rename-when-thumbify-flag (rename-non-minibuffer-frame))
    (unless (frame-parameter frame 'thumfr-thumbnail-frame) ; No-op if already a thumbnail.
      (set-frame-parameter frame 'thumfr-thumbnail-frame     non-tf-params)
      (set-frame-parameter frame 'thumfr-non-thumbnail-frame nil)
      (condition-case thumfr-thumbify-frame
          (progn
            (enlarge-font (- thumfr-font-difference) frame) ; In `frame-cmds.el'.
            (when tf-params (modify-frame-parameters frame tf-params))
            (when thumfr-next-stack-xoffset
              (set-frame-position frame thumfr-next-stack-xoffset
                                  thumfr-next-stack-yoffset)
              (setq thumfr-next-stack-xoffset  nil
                    thumfr-next-stack-yoffset  nil))
            (modify-frame-parameters frame thumfr-frame-parameters))
        (font-too-small                 ; Try again, with a larger font.
         (set-frame-parameter frame 'thumfr-non-thumbnail-frame tf-params)
         (set-frame-parameter frame 'thumfr-thumbnail-frame     nil)
         (unless (> thumfr-font-difference 0)
           (error (error-message-string thumfr-thumbify-frame)))
         (let ((thumfr-font-difference  (1- thumfr-font-difference)))
           (thumfr-thumbify-frame frame)))
        (error
         (set-frame-parameter frame 'thumfr-non-thumbnail-frame tf-params)
         (set-frame-parameter frame 'thumfr-thumbnail-frame     nil)
         (error (error-message-string thumfr-thumbify-frame)))))))    

In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
 of 2013-12-01 on ODIEONE
Bzr revision: 115342 eggert@cs.ucla.edu-20131201223313-xvgrjlk0r9aiakes
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/c/Devel/emacs/binary --enable-checking=yes,glyphs
 'CFLAGS=-O0 -g3' CPPFLAGS=-Ic:/Devel/emacs/include
 LDFLAGS=-Lc:/Devel/emacs/lib'





             reply	other threads:[~2013-12-02 15:51 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-02 15:51 Drew Adams [this message]
2013-12-02 15:58 ` bug#16028: 24.3.50; Latest build completely breaks my thumnail frames code Drew Adams
2013-12-02 18:16 ` martin rudalics
2013-12-02 19:06   ` Drew Adams
2013-12-05 14:02   ` martin rudalics
2013-12-05 16:33     ` Drew Adams
2013-12-06  5:23       ` Drew Adams
2013-12-06  8:20         ` martin rudalics
2013-12-06  8:45           ` Eli Zaretskii
2013-12-06 14:32             ` martin rudalics
2013-12-06 14:13           ` Drew Adams
2013-12-06 14:32             ` martin rudalics
2013-12-06 14:44               ` Drew Adams
2013-12-06  0:11     ` Juanma Barranquero
2013-12-06  0:18       ` Drew Adams
     [not found] <<8dee88e8-6b12-4822-9586-e013328f2ddc@default>
     [not found] ` <<529CCE7F.3070400@gmx.at>
     [not found]   ` <<52A08780.9020405@gmx.at>
     [not found]     ` <<3df21358-48ca-4150-9f0e-aa2dbf78cbcb@default>
     [not found]       ` <<360e0ca4-7e4a-4f11-8157-c8f69e4ce913@default>
     [not found]         ` <<52A188D8.60608@gmx.at>
     [not found]           ` <<83txem1i7m.fsf@gnu.org>
2013-12-06 14:43             ` Drew Adams
2013-12-06 14:56               ` martin rudalics
2013-12-06 15:29                 ` Drew Adams
2013-12-06 16:20                   ` martin rudalics
2013-12-06 16:43                     ` Drew Adams
2013-12-06 17:22                       ` martin rudalics
2013-12-06 19:04                         ` Drew Adams
2013-12-07  9:46                           ` martin rudalics
2013-12-07 20:34                             ` Drew Adams
2013-12-08  9:57                               ` martin rudalics
2013-12-08 17:31                                 ` Drew Adams
2013-12-08 17:54                                   ` martin rudalics
2013-12-09 17:14                                     ` Eli Zaretskii
2013-12-09 18:37                                       ` martin rudalics
2013-12-10  3:53                                         ` Eli Zaretskii
2013-12-10  7:52                                           ` martin rudalics
2013-12-10 14:51                                             ` Drew Adams
2013-12-10 10:31                                           ` martin rudalics
2013-12-10 10:49                                             ` martin rudalics
2013-12-10 14:50                                               ` Drew Adams
2013-12-10 15:36                                                 ` martin rudalics
2013-12-12  4:27                                                   ` Drew Adams
2013-12-12 10:17                                                     ` martin rudalics
2013-12-12 16:29                                                       ` Drew Adams
2013-12-12 18:10                                                         ` martin rudalics
2013-12-12 19:55                                                           ` Drew Adams
2013-12-13 10:13                                                             ` martin rudalics
2013-12-13 10:52                                                               ` Eli Zaretskii
2013-12-13 16:00                                                               ` Drew Adams
2013-12-13 17:24                                                                 ` martin rudalics
2013-12-13 18:05                                                                   ` Drew Adams
2013-12-13 18:23                                                                     ` martin rudalics
2013-12-12 16:38                                                       ` Eli Zaretskii
2013-12-12 18:10                                                         ` martin rudalics
2013-12-12 18:47                                                           ` Eli Zaretskii
2013-12-13 10:12                                                             ` martin rudalics
2013-12-13 10:51                                                               ` Eli Zaretskii
2013-12-14 11:22                                                                 ` martin rudalics
2013-12-14 12:04                                                                   ` Eli Zaretskii
2013-12-14 13:45                                                                     ` martin rudalics
2013-12-14 14:09                                                                       ` Eli Zaretskii
2013-12-14 17:17                                                                         ` martin rudalics
2013-12-14 17:19                                                                           ` Eli Zaretskii
2013-12-14 17:23                                                                             ` martin rudalics
2013-12-16 10:12                                                                     ` martin rudalics
2013-12-16 15:06                                                                       ` Drew Adams
2013-12-15  0:43                                                                   ` Drew Adams
2014-02-10  4:07                                                                     ` Lars Ingebrigtsen
2014-02-10  4:29                                                                       ` Drew Adams
2013-12-10 15:31                                               ` martin rudalics
2013-12-10 16:41                                               ` Eli Zaretskii
2013-12-10 16:51                                                 ` martin rudalics
2013-12-10 18:04                                                   ` Eli Zaretskii
2013-12-10 18:57                                                     ` martin rudalics
2013-12-06 18:22                     ` Eli Zaretskii
2013-12-06 18:57                       ` martin rudalics
2013-12-06 19:15                         ` Eli Zaretskii
2013-12-07  9:46                           ` martin rudalics
2013-12-07 11:15                             ` Eli Zaretskii
2013-12-07 12:25                               ` martin rudalics
2013-12-06 21:32                   ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8dee88e8-6b12-4822-9586-e013328f2ddc@default \
    --to=drew.adams@oracle.com \
    --cc=16028@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).