Changeset 3036

Show
Ignore:
Timestamp:
03/04/03 21:52:18 (6 years ago)
Author:
miyoshi
Message:

(mw32_draw_glyphs): Notice when the text cursor of window W has
been completely overwritten by a drawing operation.
(mw32_draw_phys_cursor_glyph): Keep w->phys_cursor_on_p and
restore it after mw32_draw_glyphs().

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • work/cvs2svn/src/ChangeLog.Meadow

    r3035 r3036  
    44        reserved for scroll bars on the frame. These codes were imported 
    55        from Emacs-21.2. 
     6        (mw32_draw_glyphs): Notice when the text cursor of window W has 
     7        been completely overwritten by a drawing operation. 
     8        (mw32_draw_phys_cursor_glyph): Keep w->phys_cursor_on_p and 
     9        restore it after mw32_draw_glyphs(). 
    610 
    7112003-03-02  MIYASHITA Hisashi  <himi@meadowy.org> 
  • work/cvs2svn/src/mw32term.c

    r3035 r3036  
    49744974    } 
    49754975 
     4976  if (area == TEXT_AREA 
     4977      && !row->full_width_p 
     4978      /* When drawing overlapping rows, only the glyph strings' 
     4979         foreground is drawn, which doesn't erase a cursor 
     4980         completely. */ 
     4981      && !overlaps_p) 
     4982    { 
     4983      int x0 = head ? head->x : x; 
     4984      int x1 = tail ? tail->x + tail->background_width : x; 
     4985       
     4986      x0 = FRAME_TO_WINDOW_PIXEL_X (w, x0); 
     4987      x1 = FRAME_TO_WINDOW_PIXEL_X (w, x1); 
     4988       
     4989      if (XFASTINT (w->left_margin_width) != 0) 
     4990        { 
     4991          int left_area_width = window_box_width (w, LEFT_MARGIN_AREA); 
     4992          x0 -= left_area_width; 
     4993          x1 -= left_area_width; 
     4994        } 
     4995      if (updated_area == TEXT_AREA 
     4996          && w->phys_cursor_on_p 
     4997          && output_cursor.vpos == w->phys_cursor.vpos 
     4998          && x0 <= w->phys_cursor.x 
     4999          && (x1 < 0 || x1 > w->phys_cursor.x)) 
     5000        w->phys_cursor_on_p = 0; 
     5001    } 
     5002   
    49765003  /* Value is the x-position up to which drawn, relative to AREA of W. 
    49775004     This doesn't include parts drawn because of overhangs.  */ 
     
    91709197  if (w->phys_cursor.hpos < row->used[TEXT_AREA]) 
    91719198    { 
     9199      int on_p = w->phys_cursor_on_p; 
     9200       
    91729201      mw32_draw_glyphs (w, w->phys_cursor.x, row, TEXT_AREA, 
    91739202                        w->phys_cursor.hpos, w->phys_cursor.hpos + 1, 
    9174                         hl, 0, 0, 0); 
    9175  
     9203                        hl, 0, 0, 0); 
     9204      w->phys_cursor_on_p = on_p; 
     9205       
    91769206      /* When we erase the cursor, and ROW is overlapped by other 
    91779207         rows, make sure that these overlapping parts of other rows