unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Eli Zaretskii <eliz@gnu.org>, martin rudalics <rudalics@gmx.at>
Cc: 16028@debbugs.gnu.org
Subject: bug#16028: 24.3.50; Latest build completely breaks my thumnail frames code
Date: Fri, 6 Dec 2013 06:43:11 -0800 (PST)	[thread overview]
Message-ID: <746cd4cb-c69d-4cff-8dee-f7ccde3cb2f4@default> (raw)
In-Reply-To: <<83txem1i7m.fsf@gnu.org>>

> Perhaps the real-life thumbnail-mode does something to restore the
> frame dimensions, thus countermanding the effect of making the font
> smaller?

This is the core code, for thumbifying & dethumbifying:

(defcustom thumfr-frame-parameters
  '((menu-bar-lines . 0) (tool-bar-lines . 0) (scroll-bar-width . 6))
  "*Frame parameters for thumbnail frames.
Use this to show or hide things like the menu bar, tool bar, tab bar,
and scroll bars for thumbnail frames."
  :type '(repeat (cons symbol sexp))
  :group 'Thumbnail-Frames
  :set (lambda (sym defs)
         (custom-set-default sym defs)
         (dolist (frm  (frame-list))
           (when (and (frame-live-p frm)
                      (frame-parameter frm 'thumfr-thumbnail-frame))
             (modify-frame-parameters frm thumfr-frame-parameters)))))

(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)
      (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)
            (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)))))))

(defun thumfr-dethumbify-frame (&optional frame)
  "Restore thumbnail FRAME to original size (default: selected frame)."
  (interactive)
  (setq frame  (or frame (selected-frame)))
  (let* ((non-tf-params  (frame-parameter frame 'thumfr-thumbnail-frame))
         (tf-params      (thumfr-remove-if #'thumfr-thumfr-parameter-p
                                           (frame-parameters frame))))
    (when non-tf-params                 ; No-op if not a thumbnail.
      (set-frame-parameter frame 'thumfr-non-thumbnail-frame tf-params)
      (set-frame-parameter frame 'thumfr-thumbnail-frame nil)
      (condition-case thumfr-dethumbify-frame
          (progn
            (enlarge-font thumfr-font-difference frame)
            (modify-frame-parameters frame non-tf-params))
        (error
         (set-frame-parameter frame 'thumfr-thumbnail-frame non-tf-params)
         (set-frame-parameter frame 'thumfr-non-thumbnail-frame nil)
         (error (error-message-string thumfr-dethumbify-frame))))
      (select-frame-set-input-focus frame)
      (thumfr-only-raise-frame frame))))

(defun thumfr-thumfr-parameter-p (parameter+value)
  "Return non-nil if PARAMETER+VALUE is a `thumb-frm.el' frame parameter.
PARAMETER+VALUE is a frame-parameter cons: (PARAMETER . VALUE).
This means that PARAMETER is either `thumbfr-thumbnail-frame' or
`thumbfr-non-thumbnail-frame'."
  (memq (car parameter+value)
        '(thumfr-thumbnail-frame thumfr-non-thumbnail-frame)))

To be clear (I was not, before; sorry), the problem is not with shrinking
and enlarging the font and having the frame size follow.  For instance, my
commands `zoom-frm-out' and `zoom-frm-in' work fine in this respect.

The problem is with thumbifying (`thumfr-thumbify-frame').

Running it through the debugger, I see that the frame _is_ shrunk
correctly, along with the font, at this point in the code:

(enlarge-font (- thumfr-font-difference) frame)
...
(modify-frame-parameters frame thumfr-frame-parameters)

But if I don't go through the debugger, it does not work.  And if I just
hit `c' in the debugger, instead of `d' throughout, it also does not work.

This is 100% reproducible.  Dunno why stepping through the debugger would
work, and even hitting `c' for the `enlarge-font' call works, but hitting
`c' for the `condition-case' does not.

HTH.





       reply	other threads:[~2013-12-06 14:43 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [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 [this message]
2013-12-06 14:56               ` bug#16028: 24.3.50; Latest build completely breaks my thumnail frames code 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
2013-12-02 15:51 Drew Adams
2013-12-02 15:58 ` 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

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=746cd4cb-c69d-4cff-8dee-f7ccde3cb2f4@default \
    --to=drew.adams@oracle.com \
    --cc=16028@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=rudalics@gmx.at \
    /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).