From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Ingo Lohmar Newsgroups: gmane.emacs.devel Subject: Re: set-frame-size should respect line-spacing!? Date: Sat, 12 Oct 2019 09:12:17 +0200 Message-ID: <877e5al9ny.fsf@kenko.localhost.com> References: <87blun57wt.fsf@kenko.localhost.com> <83o8ymo3cx.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="29861"; mail-complaints-to="usenet@blaine.gmane.org" Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Oct 12 09:14:38 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iJBbo-0007bY-Qo for ged-emacs-devel@m.gmane.org; Sat, 12 Oct 2019 09:14:37 +0200 Original-Received: from localhost ([::1]:59274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iJBbi-0004BQ-5X for ged-emacs-devel@m.gmane.org; Sat, 12 Oct 2019 03:14:30 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48578) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iJBZe-0002rr-T8 for emacs-devel@gnu.org; Sat, 12 Oct 2019 03:12:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iJBZd-0006LX-IG for emacs-devel@gnu.org; Sat, 12 Oct 2019 03:12:22 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]:48755) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iJBZd-0006Kw-1n for emacs-devel@gnu.org; Sat, 12 Oct 2019 03:12:21 -0400 Original-Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 247FE16005D for ; Sat, 12 Oct 2019 09:12:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1570864339; bh=kqijaQf2mftHDTtuy0yUhxFTLAXp9UREUZ77rSKCeM8=; h=From:To:Cc:Subject:Date:From; b=gEWGJ5HDoGdEmEc6+TeHKCNY7FrtFmFvpMCsKgCuSXDayJt6RfZ+qz1/SfIaikzCs 7ydieSQBjbemHE5bQAwfaHWiqmZN0fW82GQ+6RN9y7w9QDl95UUKC6mu49Lxqt6QRG kDZ7P8bVnmSXTnTzs4Hm/fbQB2D2A2AqrJemXj+WjYZXVT3bE6f6zt5+KzNKj1cDNp 8SeBHYKyPJJ4JMxxdubNzJum0fcQpo0o3WR1V76pHnx7/M92bU51WbK3GD/fz9eHdn qvGu2uYsjacjRW7SEbOEi4KmfZ4utU8jS5Eez2zun2+U8UbQ7+5eeur46K29Ygu3+N dLs3o1oOURjMg== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 46qwxZ1LTXz6tm9; Sat, 12 Oct 2019 09:12:18 +0200 (CEST) In-Reply-To: <83o8ymo3cx.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 185.67.36.65 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:240902 Archived-At: On Sat, Oct 12 2019 10:00 (+0300), Eli Zaretskii wrote: >> From: Ingo Lohmar >> Date: Fri, 11 Oct 2019 22:44:34 +0200 >> >> Since I tested with a minimal example, however, I did not realize before >> that there is another code path that directly uses the C function >> `set-frame-size', with the same effect: If line-spacing is > 0 in the >> frame, it is not accounted for, and the frame lacks a few pixels in >> height (number of lines * "line-spacing effect"). >> >> This appears to be a bug: If asked for a frame N lines tall, N lines (of >> default-font's character height plus the effect of line-spacing) should >> fit, right? > > Not necessarily. You didn't tell which command or API exhibits this > behavior, but in some cases we mean height in units of the frame's > canonical character height, ion which case it doesn't include any > effects like line-spacing etc. The C API function is `set-frame-size'. If you're talking about the *caller*, this is the code from posframe.el: (defun posframe--set-frame-size (posframe height min-height width min-width) "Set POSFRAME's size. It will set the size by the POSFRAME's HEIGHT, MIN-HEIGHT WIDTH and MIN-WIDTH." (if (and width height) (unless (equal posframe--last-posframe-size (cons width height)) (set-frame-size posframe width height) (setq-local posframe--last-posframe-size (cons width height))) (fit-frame-to-buffer posframe height min-height width min-width))) The "else" path has been fixed by Martin in e3f97d73653df725322d7f2392d36f858cce5a73. But the "then" path has exhibits the behavior. Are you saying `set-frame-size' is supposed to ignore line-spacing? In that case, what is the correct way to set the frame-size in the pixel-exact way?