emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: Re: mode-line redisplay bug]


From: YAMAMOTO Mitsuharu
Subject: Re: address@hidden: Re: mode-line redisplay bug]
Date: Wed, 12 Oct 2005 17:41:18 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/22.0.50 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Wed, 12 Oct 2005 12:15:37 +0900, YAMAMOTO Mitsuharu <address@hidden> 
>>>>> said:

> I tried it on Mac, and found that the calculated rectangle on a
> mode-line was not correct when it was displayed with a
> variable-width font.

Sorry for the noise.  If enabled rows except the mode-line in the
current matrix are gathered to the lower indices, the following one
would be better.

                                     YAMAMOTO Mitsuharu
                                address@hidden

*** xdisp.c.~1.1059.~   Wed Oct 12 09:31:47 2005
--- xdisp.c     Wed Oct 12 14:59:59 2005
***************
*** 2059,2067 ****
    width = WINDOW_FRAME_COLUMN_WIDTH (w);
    height = WINDOW_FRAME_LINE_HEIGHT (w);
  
-   r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
-   end_row = r + w->current_matrix->nrows - 1;
- 
    if (w->pseudo_window_p)
      {
        area = TEXT_AREA;
--- 2059,2064 ----
***************
*** 2085,2097 ****
        area = TEXT_AREA;
  
      text_glyph:
        gr = 0; gy = 0;
!       for (; r < end_row && r->enabled_p; ++r)
!       if (r->y + r->height > y)
!         {
!           gr = r; gy = r->y;
!           break;
!         }
  
        if (gr && gy <= y)
        {
--- 2082,2104 ----
        area = TEXT_AREA;
  
      text_glyph:
+       r = MATRIX_HEADER_LINE_ROW (w->current_matrix);
+       end_row = MATRIX_MODE_LINE_ROW (w->current_matrix);
+ 
        gr = 0; gy = 0;
!       for (; r <= end_row; ++r)
!       {
!         if (!r->enabled_p)
!           if (end_row->enabled_p)
!             r = end_row;
!           else
!             break;
!         if (r->y + r->height > y)
!           {
!             gr = r; gy = r->y;
!             break;
!           }
!       }
  
        if (gr && gy <= y)
        {
***************
*** 2148,2155 ****
        width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
  
      row_glyph:
        gr = 0, gy = 0;
!       for (; r < end_row && r->enabled_p; ++r)
        if (r->y + r->height > y)
          {
            gr = r; gy = r->y;
--- 2155,2165 ----
        width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
  
      row_glyph:
+       r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
+       end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w);
+ 
        gr = 0, gy = 0;
!       for (; r <= end_row && r->enabled_p; ++r)
        if (r->y + r->height > y)
          {
            gr = r; gy = r->y;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]