From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Trunk emacs infelicity with linum mode Date: Wed, 10 Sep 2014 20:39:36 +0300 Message-ID: <83a9679xyf.fsf@gnu.org> References: <87zjeix7hg.fsf@glaurung.internal.golden-gryphon.com> <838um1gar9.fsf@gnu.org> <87ppfdyhpf.fsf@glaurung.internal.golden-gryphon.com> <8361h5g7mv.fsf@gnu.org> <87zjehw5cs.fsf@glaurung.internal.golden-gryphon.com> <834mwog0u0.fsf@gnu.org> <87wq9kd5y3.fsf@glaurung.internal.golden-gryphon.com> <83oauve75i.fsf@gnu.org> <87lhpxaopi.fsf@glaurung.internal.golden-gryphon.com> <83vbp1deta.fsf@gnu.org> <540ACB6A.5020402@gmx.at> <540AED8A.9030000@gmx.at> <83ha0jcv31.fsf@gnu.org> <540C9F76.2020606@gmx.at> <831trncjhf.fsf@gnu.org> <540D7793.6010704@gmx.at> <83mwa9aqdq.fsf@gnu.org> <541005DC.9060704@gmx.at> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1410370821 333 80.91.229.3 (10 Sep 2014 17:40:21 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 10 Sep 2014 17:40:21 +0000 (UTC) Cc: srivasta@ieee.org, emacs-devel@gnu.org To: martin rudalics Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Sep 10 19:40:14 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XRlro-0007mi-S2 for ged-emacs-devel@m.gmane.org; Wed, 10 Sep 2014 19:39:41 +0200 Original-Received: from localhost ([::1]:57864 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRlro-0003l4-Cw for ged-emacs-devel@m.gmane.org; Wed, 10 Sep 2014 13:39:40 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50356) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRlrg-0003jr-Ms for emacs-devel@gnu.org; Wed, 10 Sep 2014 13:39:37 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XRlra-0005WC-Jr for emacs-devel@gnu.org; Wed, 10 Sep 2014 13:39:32 -0400 Original-Received: from mtaout21.012.net.il ([80.179.55.169]:37623) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRlra-0005SM-5U for emacs-devel@gnu.org; Wed, 10 Sep 2014 13:39:26 -0400 Original-Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0NBP002004R9Y100@a-mtaout21.012.net.il> for emacs-devel@gnu.org; Wed, 10 Sep 2014 20:39:24 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NBP002OZ51NWM20@a-mtaout21.012.net.il>; Wed, 10 Sep 2014 20:39:24 +0300 (IDT) In-reply-to: <541005DC.9060704@gmx.at> X-012-Sender: halo1@inter.net.il X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-Received-From: 80.179.55.169 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:174161 Archived-At: > Date: Wed, 10 Sep 2014 10:03:40 +0200 > From: martin rudalics > CC: srivasta@ieee.org, emacs-devel@gnu.org > > >> The only way to change the coordinates from 10x10 to something else is > >> via adjust_frame_size. > > > > You are welcome to step through x_create_frame on Windows, after > > typing "C-x 5 2", and see how it avoids that. > > Here, I get > > (gdb) bt > #0 adjust_frame_size (f=0x49b98a8, new_width=80, new_height=160, inhibit=5, pretend=true) at frame.c:390 > #1 0x0120420c in Fx_create_frame (parameters=...) at w32fns.c:4609 Is that in Fx_create_frame called because of "C-x 5 2"? If so, it is very strange, because I see something very different with the trunk from a few days ago. Please find below a GDB session stepping through the code that should hopefully be self-explanatory. ====================================================================== (gdb) break Fx_create_frame Breakpoint 3 at 0x120132f: file w32fns.c, line 4414. (gdb) disable 3 (gdb) break Fredraw_display Breakpoint 4 at 0x100805d: file dispnew.c, line 3023. (gdb) r -Q Starting program: d:\usr\eli\emacs\emacs-trunk_2014-09-01\src\emacs.exe -Q Breakpoint 4, Fredraw_display () at dispnew.c:3023 3023 FOR_EACH_FRAME (tail, frame) (gdb) enable 3 (gdb) c Continuing. Breakpoint 3, Fx_create_frame (parameters=117344758) at w32fns.c:4414 4414 int minibuffer_only = 0; (gdb) until 4678 Fx_create_frame (parameters=117344750) at w32fns.c:4678 4678 adjust_frame_size (f, FRAME_TEXT_WIDTH (f), FRAME_TEXT_HEIGHT (f), 0, 1); (gdb) s adjust_frame_size (f=0x6feff78, new_width=640, new_height=560, inhibit=0, pretend=true) at frame.c:390 390 int unit_width = FRAME_COLUMN_WIDTH (f); (gdb) n 391 int unit_height = FRAME_LINE_HEIGHT (f); (gdb) 392 int old_pixel_width = FRAME_PIXEL_WIDTH (f); (gdb) n 393 int old_pixel_height = FRAME_PIXEL_HEIGHT (f); (gdb) 399 int windows_width = FRAME_WINDOWS_WIDTH (f); (gdb) 400 int windows_height = FRAME_WINDOWS_HEIGHT (f); (gdb) 403 struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f)); (gdb) 404 int old_windows_width = WINDOW_PIXEL_WIDTH (r); (gdb) 406 = (WINDOW_PIXEL_HEIGHT (r) (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) n 409 : 0)); (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) 408 ? WINDOW_PIXEL_HEIGHT (XWINDOW (FRAME_MINIBUF_WINDOW (f))) (gdb) 409 : 0)); (gdb) 405 int old_windows_height (gdb) 411 int old_text_width = FRAME_TEXT_WIDTH (f); (gdb) p old_windows_height $1 = 577 (gdb) n 412 int old_text_height = FRAME_TEXT_HEIGHT (f); (gdb) 414 int new_text_width = (new_width >= 0) ? new_width : old_text_width; (gdb) p old_windows_width $2 = 673 (gdb) n 415 int new_text_height = (new_height >= 0) ? new_height : old_text_height; (gdb) 420 XSETFRAME (frame, f); (gdb) p new_text_width $3 = 640 (gdb) p new_text_height $4 = 560 (gdb) p old_text_width $5 = 640 (gdb) p old_text_height $6 = 560 (gdb) n 424 min_windows_width = frame_windows_min_size (frame, Qt, Qt); (gdb) 425 min_windows_height = frame_windows_min_size (frame, Qnil, Qt); (gdb) 427 if (inhibit >= 2 && inhibit <= 4) (gdb) p min_windows_width $7 = 80 (gdb) p min_windows_height $8 = 80 (gdb) n 441 inhibit_horizontal = inhibit_vertical = inhibit == 5; (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) n 445 : max (FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width), (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 448 new_windows_width = new_pixel_width - 2 * FRAME_INTERNAL_BORDER_WIDTH (f); (gdb) p new_pixel_width $9 = 673 (gdb) n 449 new_text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, new_pixel_width); (gdb) 450 new_cols = new_text_width / unit_width; (gdb) p new_text_width $10 = 640 (gdb) n 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) p new_cols $11 = 80 (gdb) n 454 : max (FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_hei ght), (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 459 - FRAME_TOP_MARGIN_HEIGHT (f) (gdb) 460 - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)); (gdb) 458 new_windows_height = (new_pixel_height (gdb) 461 new_text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, new_pixel_height); (gdb) 462 new_lines = new_text_height / unit_height; (gdb) 465 if (FRAME_WINDOW_P (f) (gdb) p new_pixel_height $12 = 611 (gdb) p new_windows_height $13 = 577 (gdb) p new_text_height $14 = 560 (gdb) p new_lines $15 = 35 (gdb) p old_lines $16 = (struct row_entry **) 0x6f9b550 (gdb) n 466 && f->official (gdb) 467 && ((!inhibit_horizontal (gdb) 468 && (new_pixel_width != old_pixel_width (gdb) 469 || inhibit == 0 || inhibit == 2)) (gdb) n 479 if (inhibit_horizontal) (gdb) 481 else if (inhibit_vertical) (gdb) 484 x_set_window_size (f, 0, new_text_width, new_text_height, 1); (gdb) s x_set_window_size (f=0x6feff78, change_gravity=0, width=640, height=560, pixelwise=true) at w32term.c:6092 6092 block_input (); (gdb) n 6094 if (pixelwise) (gdb) 6096 pixelwidth = FRAME_TEXT_TO_PIXEL_WIDTH (f, width); (gdb) 6097 pixelheight = FRAME_TEXT_TO_PIXEL_HEIGHT (f, height); (gdb) 6105 f->win_gravity = NorthWestGravity; (gdb) p pixelwidth $17 = 673 (gdb) p pixelheight $18 = 611 (gdb) n 6106 x_wm_set_size_hint (f, (long) 0, 0); (gdb) n 6108 f->want_fullscreen = FULLSCREEN_NONE; (gdb) 6109 w32fullscreen_hook (f); (gdb) 6111 rect.left = rect.top = 0; (gdb) 6112 rect.right = pixelwidth; (gdb) 6113 rect.bottom = pixelheight; (gdb) 6116 FRAME_EXTERNAL_MENU_BAR (f)); (gdb) 6115 AdjustWindowRect (&rect, f->output_data.w32->dwStyle, (gdb) 6122 rect.bottom - rect.top, (gdb) 6121 rect.right - rect.left, (gdb) 6118 my_set_window_pos (FRAME_W32_WINDOW (f), (gdb) 6152 if (w32_enable_frame_resize_hack) (gdb) 6156 FRAME_PIXEL_TO_TEXT_HEIGHT (f, pixelheight), (gdb) 6155 change_frame_size (f, FRAME_PIXEL_TO_TEXT_WIDTH (f, pixelwidth), (gdb) s change_frame_size (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5559 5559 change_frame_size_1 (f, new_width, new_height, pretend, delay, safe, (gdb) s change_frame_size_1 (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5498 5498 if (delay || (redisplaying_p && !safe)) (gdb) n 5500 f->new_width = new_width; (gdb) 5501 f->new_height = new_height; (gdb) 5502 f->new_pixelwise = pixelwise; (gdb) 5503 delayed_size_change = 1; (gdb) 5530 } (gdb) n change_frame_size (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5561 5561 } (gdb) x_set_window_size (f=0x6feff78, change_gravity=0, width=640, height=560, pixelwise=true) at w32term.c:6158 6158 SET_FRAME_GARBAGED (f); (gdb) 6161 mark_window_cursors_off (XWINDOW (f->root_window)); (gdb) 6168 cancel_mouse_face (f); (gdb) 6171 unblock_input (); (gdb) 6173 do_pending_window_change (0); (gdb) s do_pending_window_change (safe=false) at dispnew.c:5472 5472 if (redisplaying_p && !safe) (gdb) p redisplaying_p $19 = false (gdb) n 5475 while (delayed_size_change) (gdb) p delayed_size_change $20 = true (gdb) n 5479 delayed_size_change = 0; (gdb) 5481 FOR_EACH_FRAME (tail, frame) (gdb) 5483 struct frame *f = XFRAME (frame); (gdb) 5485 if (f->new_height != 0 || f->new_width != 0) (gdb) p f->new_height $21 = 560 (gdb) p f->new_width $22 = 640 (gdb) n 5487 0, 0, safe, f->new_pixelwise); (gdb) s 5486 change_frame_size (f, f->new_width, f->new_height, (gdb) s change_frame_size (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5559 5559 change_frame_size_1 (f, new_width, new_height, pretend, delay, safe, (gdb) s change_frame_size_1 (f=0x5703b60, new_width=640, new_height=560, pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5498 5498 if (delay || (redisplaying_p && !safe)) (gdb) n 5508 f->new_height = 0; (gdb) 5509 f->new_width = 0; (gdb) 5510 f->new_pixelwise = 0; (gdb) 5513 if (pixelwise) (gdb) 5515 new_width = (new_width <= 0) ? FRAME_TEXT_WIDTH (f) : new_width; (gdb) 5516 new_height = (new_height <= 0) ? FRAME_TEXT_HEIGHT (f) : new_height; (gdb) 5528 adjust_frame_size (f, new_width, new_height, 5, pretend); (gdb) p new_width $1 = 640 (gdb) p new_height $2 = 560 (gdb) s adjust_frame_size (f=0x5703b60, new_width=640, new_height=560, inhibit=5, pretend=false) at frame.c:390 390 int unit_width = FRAME_COLUMN_WIDTH (f); (gdb) n 391 int unit_height = FRAME_LINE_HEIGHT (f); (gdb) 392 int old_pixel_width = FRAME_PIXEL_WIDTH (f); (gdb) 393 int old_pixel_height = FRAME_PIXEL_HEIGHT (f); (gdb) 399 int windows_width = FRAME_WINDOWS_WIDTH (f); (gdb) 400 int windows_height = FRAME_WINDOWS_HEIGHT (f); (gdb) 403 struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f)); (gdb) 404 int old_windows_width = WINDOW_PIXEL_WIDTH (r); (gdb) 406 = (WINDOW_PIXEL_HEIGHT (r) (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) 409 : 0)); (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) 408 ? WINDOW_PIXEL_HEIGHT (XWINDOW (FRAME_MINIBUF_WINDOW (f))) (gdb) 409 : 0)); (gdb) 405 int old_windows_height (gdb) 411 int old_text_width = FRAME_TEXT_WIDTH (f); (gdb) 412 int old_text_height = FRAME_TEXT_HEIGHT (f); (gdb) 414 int new_text_width = (new_width >= 0) ? new_width : old_text_width; (gdb) 415 int new_text_height = (new_height >= 0) ? new_height : old_text_height; (gdb) 420 XSETFRAME (frame, f); (gdb) 424 min_windows_width = frame_windows_min_size (frame, Qt, Qt); (gdb) 425 min_windows_height = frame_windows_min_size (frame, Qnil, Qt); (gdb) 427 if (inhibit >= 2 && inhibit <= 4) (gdb) 441 inhibit_horizontal = inhibit_vertical = inhibit == 5; (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 445 : max (FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width), (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 445 : max (FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width), (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 448 new_windows_width = new_pixel_width - 2 * FRAME_INTERNAL_BORDER_WIDTH (f); (gdb) 449 new_text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, new_pixel_width); (gdb) 450 new_cols = new_text_width / unit_width; (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 454 : max (FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height), (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 454 : max (FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height), (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 459 - FRAME_TOP_MARGIN_HEIGHT (f) (gdb) 460 - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)); (gdb) 458 new_windows_height = (new_pixel_height (gdb) 461 new_text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, new_pixel_height); (gdb) 462 new_lines = new_text_height / unit_height; (gdb) 465 if (FRAME_WINDOW_P (f) (gdb) 466 && f->official (gdb) 467 && ((!inhibit_horizontal (gdb) 470 || (!inhibit_vertical (gdb) 491 if (new_text_width == old_text_width (gdb) 492 && new_text_height == old_text_height (gdb) 493 && new_windows_width == old_windows_width (gdb) 494 && new_windows_height == old_windows_height (gdb) 495 && new_pixel_width == old_pixel_width (gdb) 496 && new_pixel_height == old_pixel_height) (gdb) 499 sanitize_window_sizes (frame, Qt); (gdb) p new_text_height $3 = 560 (gdb) p old_text_height $4 = 560 (gdb) p new_text_width $5 = 640 (gdb) p old_text_width $6 = 640 (gdb) n 500 sanitize_window_sizes (frame, Qnil); (gdb) 502 return; (gdb) do_pending_window_change (safe=false) at dispnew.c:5481 5481 FOR_EACH_FRAME (tail, frame) (gdb) 5483 struct frame *f = XFRAME (frame); (gdb) 5485 if (f->new_height != 0 || f->new_width != 0) (gdb) p f->new_height $23 = 0 (gdb) p f->new_width $24 = 0 (gdb) n 5481 FOR_EACH_FRAME (tail, frame) (gdb) 5475 while (delayed_size_change) (gdb) 5490 } (gdb) n x_set_window_size (f=0x6feff78, change_gravity=0, width=640, height=560, pixelwise=true) at w32term.c:6174 6174 } (gdb) adjust_frame_size (f=0x6feff78, new_width=640, new_height=560, inhibit=0, pretend=true) at frame.c:485 485 f->resized_p = true; (gdb) 487 return; (gdb) 583 } (gdb) Fx_create_frame (parameters=117344750) at w32fns.c:4683 4683 block_input (); (gdb) 4684 x_wm_set_size_hint (f, window_prompting, 0); (gdb) c Continuing.