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.
next parent 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).