From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#38828: 26.3; Customized mode line breaks height of vertical scroll bar Date: Wed, 1 Jan 2020 18:49:30 +0100 Message-ID: References: <840ae56c-467b-21f2-7109-bb744897e71b@gmx.at> <83tv5fjgxn.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C0249E9C16D5493647A6148F" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="241710"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 38828@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jan 01 18:50:29 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1imi8b-0010lq-Dd for geb-bug-gnu-emacs@m.gmane.org; Wed, 01 Jan 2020 18:50:29 +0100 Original-Received: from localhost ([::1]:60486 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1imi8Z-00073b-Rg for geb-bug-gnu-emacs@m.gmane.org; Wed, 01 Jan 2020 12:50:28 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:47625) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1imi8B-00073J-RQ for bug-gnu-emacs@gnu.org; Wed, 01 Jan 2020 12:50:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1imi8A-0005CZ-Fu for bug-gnu-emacs@gnu.org; Wed, 01 Jan 2020 12:50:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:59787) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1imi8A-0005C1-Bz for bug-gnu-emacs@gnu.org; Wed, 01 Jan 2020 12:50:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1imi8A-0004ZV-9r for bug-gnu-emacs@gnu.org; Wed, 01 Jan 2020 12:50:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 01 Jan 2020 17:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38828 X-GNU-PR-Package: emacs Original-Received: via spool by 38828-submit@debbugs.gnu.org id=B38828.157790098017492 (code B ref 38828); Wed, 01 Jan 2020 17:50:02 +0000 Original-Received: (at 38828) by debbugs.gnu.org; 1 Jan 2020 17:49:40 +0000 Original-Received: from localhost ([127.0.0.1]:37524 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1imi7o-0004Y3-1S for submit@debbugs.gnu.org; Wed, 01 Jan 2020 12:49:40 -0500 Original-Received: from mout.gmx.net ([212.227.15.18]:55245) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1imi7m-0004XZ-0y for 38828@debbugs.gnu.org; Wed, 01 Jan 2020 12:49:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1577900971; bh=N3akdgV71GpbFYgFZvysk36QRytzbBRyn4P05Xfi22A=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=K0s4Is+cOzWSfOg170IdqYO3XwRa1ckmxWL9N96fNNP3t068sJWPAOjJvmIL7XU0O +COqpwlaE55O3OqyEF/dgU49XwhnMpek4eI8YYwkAPSLvPd9IuaInImrgp7ACGxLAf IPQCB3TuSCaomLDos0A98fq3CFN0NBlKo9ogg3g8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Original-Received: from [192.168.1.100] ([212.95.5.74]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N5VDE-1jor9l0exG-016vFp; Wed, 01 Jan 2020 18:49:31 +0100 In-Reply-To: <83tv5fjgxn.fsf@gnu.org> Content-Language: de-AT X-Provags-ID: V03:K1:parOrPpKV9OIS11BCm9sRS6WjGFmKN4AMZLvLvwBDI2IQGpb+tt JqStmtVN4G9Gb12o9dkfK7NUNNePuyNgbz8B1uuMxHZ1Le4PJ9O3DjgCBl41rHUyNcSLmIM 003oROeYnp+22bdNApkdwRDf4dVFz3E/4AwU99ME5upA4FNZqwjZ07Hva/UgXNo0LatmyIo bu9vZWkdb8eiXb7yycFnw== X-UI-Out-Filterresults: notjunk:1;V03:K0:yj8sgx4r7zw=:BS/lVEV6xhx23aDZL3A1Gb N65QsOXJdWqDZ51GGAsYxui3YRK7Dt1pGMsLfuSEEcmWRlbCqV3733euqJ5qznyHV3McCau+U 7U6TvT4GPRldzvmaO0c00x2ttEnOQaK0uMWXvUsVImJro7hPgygQO0Uk0/wsdycZQZ05m4duL A0d89gEImuGxxoHeCQ9b1dpFwMVG58hkyGRWdq6+3nnWScF6ngl/mtl2j2ebvhTEM/DFpU0IL AjTqvb9DU65Ql8D2qqxhyxPHfi4s6oeE9GDsESRgIjAApci2hODObZkn85hnPtHGRsMVpwQEV 1ry2L/0m49owAC5Kf2d0Z/xxSRHftUUAB15dmbwz/YzhkgQRwaV49MzE7wTuOlREZmMyN+75a 8Tjl8lVbv+i1bd77psF2PvX+beap6DOQ/CyF/mWV/ShYfPDj2z/xlwybLXDaBQCgKnfwPDZMn 5PLbRnIQhuLPH0rCy2kazkAvCNhYICK7KZM15xs51DvcfK1AYZ7mrGvbfCESkQAUJmngoKbhg D9sfOwf0YcfJb/h2i4eUw1eaRp3B1bIVcS/ymiD97BIT9PjvXK3xFdo5qIk5K/XCbBZX+xHZF aZrHzZk1FOdn7gVDNCDr4Ayjv5yWnkLsCoiD6zhg4gc4qIVHV+8JcVFKvhEL3eSoTgjJtxE2A Bl1NR+6Eo5zEx+3JtOVfj5EanAN6iMatLrWO/He1pMFjkA/eqkfY3dK5tBHmQW7H45KZGOz4m Sk900P/NKu/CBwt9Jkefp7gEuuBXsQdfO2wZFn53Esl3Y4gRRl56/0xdVYmJVsYgHstioqlX X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:174049 Archived-At: This is a multi-part message in MIME format. --------------C0249E9C16D5493647A6148F Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit > AFAICT, when the ml_row->mode_line_p flag is reset, ml_row->height is > also zero, so disregarding the flag would not have helped us in this > case. Right, I've been there initially. >> For the record: Rewriting 'window_box_height' as >> >> int >> window_box_height (struct window *w) >> { >> return WINDOW_BOX_TEXT_HEIGHT (w); >> } >> >> fixes the problem here. > > Thanks, but that's not an idea I would like entertaining. Neither do I. > As much as > window_box_text_height "window_box_height" presumably, also everywhere below. > and WINDOW_BOX_TEXT_HEIGHT look similar, > there's a subtle difference between them. The latter is supposed not > to be called during redisplay, because window's mode_line_height field > is not guaranteed to be accurate then, Your patch does use it though. > and the fallback is the same > estimate_mode_line_height which doesn't support non-character display > elements. It is generally okay to use WINDOW_BOX_TEXT_HEIGHT in > window.c, window.c doesn't use it. It's used in xdisp.c only. And I'm sure it can return negative values, sometimes. So I presume we can do away with it then? > because that code runs outside of redisplay, and the window > object should be up-to-date. But window_box_text_height is called > _a_lot_ from within redisplay itself. And here we get to another > subtlety: window_box_text_height uses the window's current_matrix, > which might not be up-to-date yet, depending on where it is called, > because we only update it in update_frame, and set_vertical_scroll_bar > is called long before that. > > When a window is resized, as happens in this scenario when the > echo-area message is cleared, the mode-line row changes to a different > one (because it is always the last row of the window), and the new row > didn't yet get updated. We have the correct data in the > desired_matrix, but not in the current_matrix. I considered using the > desired_matrix in this case, but that is also somewhat scary: the > desired matrix could be very sparse under some redisplay > optimizations, so we'd need some logic to verify the data is valid > before using it. I've tried via w->mode_line_height = MATRIX_MODE_LINE_ROW (w->current_matrix)->height = DESIRED_MODE_LINE_HEIGHT (w); after displaying the mode lines without great success (likely because window_box_height didn't go for it then). > Eventually, a simpler solution is just to fall back > to the window's mode_line_height field, before falling back to > estimate_mode_line_height, because when the mode-line height changes, > we schedule an immediate thorough redisplay of the window, and > invalidate that window's mode_line_height field, to be recomputed by > the rescheduled redisplay. See the proposed patch below. This fails here when loading the attached test-popup-2.el and typing, for example, F2 F3 F2 . martin --------------C0249E9C16D5493647A6148F Content-Type: text/plain; charset=UTF-8; name="test-popup-2.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test-popup-2.el" KGRlZnZhciBvbGQtbW9kZS1saW5lLWZvcm1hdCBtb2RlLWxpbmUtZm9ybWF0KQ0KDQooZGVm dW4gZm9vLW1lc3NhZ2UgKCZvcHRpb25hbCBuZXdsaW5lKQ0KICAobWVzc2FnZQ0KICAgKGNv bmNhdCAoaWYgbmV3bGluZSAiXG4iICIiKQ0KCSAgICJ0b3RhbDogJXMsIGJvZHk6ICVzLCBt b2RlOiAlcyIpDQogICAod2luZG93LXBpeGVsLWhlaWdodCkgKHdpbmRvdy1ib2R5LWhlaWdo dCBuaWwgdCkNCiAgICh3aW5kb3ctbW9kZS1saW5lLWhlaWdodCkpKQ0KDQooZGVmdW4gZm9v ICgpDQogIChpbnRlcmFjdGl2ZSkNCiAgKGZvby1tZXNzYWdlKSkNCg0KKGdsb2JhbC1zZXQt a2V5IFtmMV0gJ2ZvbykNCg0KKGRlZnVuIHRlc3QtcG9wdXAgKCkNCiAgKGludGVyYWN0aXZl KQ0KOzsgICAoc2V0LWZhY2UtYXR0cmlidXRlICdtb2RlLWxpbmUgbmlsIDpoZWlnaHQgMjAw KQ0KOzsgICAoc2V0LWZhY2UtYXR0cmlidXRlICdtb2RlLWxpbmUtaW5hY3RpdmUgbmlsIDpo ZWlnaHQgMjAwKQ0KICAoc2V0cQ0KICAgbW9kZS1saW5lLWZvcm1hdA0KICAgKGNvbnMgKHBy b3BlcnRpemUgIiAiICdkaXNwbGF5DQogICAgICAgICAgICAgICAgICAgICAoY3JlYXRlLWlt YWdlICIvKiBYUE0gKi8gc3RhdGljIGNoYXIgKiBpbWFnZVtdID0gew0KXCIzIDYwIDEgMVwi LA0KXCIwIGMgIzAwYWFmZlwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIw MDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwi LFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5c IjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAw XCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwN ClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIw MDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwi LFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5c IjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAw XCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixc blwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIw MDBcIixcblwiMDAwXCIsXG5cIjAwMFwiDQp9OyIgJ3hwbSB0IDphc2NlbnQgJ2NlbnRlcikp DQoJIG1vZGUtbGluZS1mb3JtYXQpKQ0KICAoZm9vLW1lc3NhZ2UgdCkpDQoNCihnbG9iYWwt c2V0LWtleSBbZjJdICd0ZXN0LXBvcHVwKQ0KDQooZGVmdW4gYmFyICgpDQogIChpbnRlcmFj dGl2ZSkNCiAgKHNldHEgbW9kZS1saW5lLWZvcm1hdCBvbGQtbW9kZS1saW5lLWZvcm1hdCkp DQoNCihnbG9iYWwtc2V0LWtleSBbZjNdICdiYXIpDQo= --------------C0249E9C16D5493647A6148F--