tui_gen_win_info::refresh_window ()
{
if (handle != NULL)
- {
- touchwin (handle);
- wrefresh (handle);
- }
+ wrefresh (handle);
}
/* Function to delete the curses window, checking for NULL. */
/* Draw a border arround the window. */
static void
box_win (struct tui_win_info *win_info,
- int highlight_flag)
+ bool highlight_flag)
{
- if (win_info && win_info->handle)
- {
- WINDOW *win;
- int attrs;
+ WINDOW *win;
+ int attrs;
- win = win_info->handle;
- if (highlight_flag == HILITE)
- attrs = tui_active_border_attrs;
- else
- attrs = tui_border_attrs;
+ win = win_info->handle;
+ if (highlight_flag)
+ attrs = tui_active_border_attrs;
+ else
+ attrs = tui_border_attrs;
- wattron (win, attrs);
+ wattron (win, attrs);
#ifdef HAVE_WBORDER
- wborder (win, tui_border_vline, tui_border_vline,
- tui_border_hline, tui_border_hline,
- tui_border_ulcorner, tui_border_urcorner,
- tui_border_llcorner, tui_border_lrcorner);
+ wborder (win, tui_border_vline, tui_border_vline,
+ tui_border_hline, tui_border_hline,
+ tui_border_ulcorner, tui_border_urcorner,
+ tui_border_llcorner, tui_border_lrcorner);
#else
- box (win, tui_border_vline, tui_border_hline);
+ box (win, tui_border_vline, tui_border_hline);
#endif
- if (!win_info->title.empty ())
- mvwaddstr (win, 0, 3, win_info->title.c_str ());
- wattroff (win, attrs);
+ if (!win_info->title.empty ())
+ {
+ /* Emit "+-TITLE-+" -- so 2 characters on the right and 2 on
+ the left. */
+ int max_len = win_info->width - 2 - 2;
+
+ if (win_info->title.size () <= max_len)
+ mvwaddstr (win, 0, 3, win_info->title.c_str ());
+ else
+ {
+ std::string truncated
+ = "..." + win_info->title.substr (win_info->title.size ()
+ - max_len + 3);
+ mvwaddstr (win, 0, 3, truncated.c_str ());
+ }
}
+ wattroff (win, attrs);
}
&& win_info->can_highlight
&& win_info->handle != NULL)
{
- box_win (win_info, NO_HILITE);
+ box_win (win_info, false);
win_info->refresh_window ();
win_info->set_highlight (false);
}
&& win_info->can_highlight
&& win_info->handle != NULL)
{
- box_win (win_info, HILITE);
+ box_win (win_info, true);
win_info->refresh_window ();
win_info->set_highlight (true);
}
{
tui_gen_win_info::make_window ();
if (handle != NULL && can_box ())
- box_win (this, NO_HILITE);
+ box_win (this, false);
}
/* We can't really make windows visible, or invisible. So we have to