예제 #1
0
/** reallocate buffers to match grid dimensions */
void
Canvas::resize_grid ( void )
{
    //   _update_row_mapping();

    resize();

    if ( m.vp )
    {
        if ( m.vp->w != m.w || m.vp->h != m.h ||
            m.div_w != m.old_div_w || m.div_h != m.old_div_h )
        {
            if ( m.grid_drawn )
                signal_resize();

            m.old_div_w = m.div_w;
            m.old_div_h = m.div_h;
        }
        else
            return;
    }

    DMESSAGE( "resizing grid %dx%d", m.vp->w, m.vp->h );

    if ( m.previous )
    {
        free( m.previous );
        free( m.current );
    }

    m.current = _alloc_array();
    m.previous = _alloc_array();

    m.grid_drawn = false;
}
예제 #2
0
/** update everything about mapping, leaving the viewport alone */
void
Canvas::update_mapping ( void )
{
    _update_row_mapping();

    m.mapping_drawn = false;

    resize();

    int old_margin = m.margin_left;

    m.margin_left = 0;

    m.draw = false;

    m.grid->draw_row_names( this );

    if ( m.margin_left != old_margin )
    {
        signal_resize();
        signal_draw();
    }
    else
        signal_draw();
}
예제 #3
0
void CoreManager::Resize()
{
  struct winsize size;

  resize_pending = false;

  if (ioctl(fileno(stdout), TIOCGWINSZ, &size) >= 0) {
    Curses::resizeterm(size.ws_row, size.ws_col);

    // make sure everything is redrawn from the scratch
    Curses::clear();
  }

  signal_resize();
  Redraw();
}