return rc;
}
+/**
+ * mutt_window_copy_size - Copy the size of one Window to another
+ * @param win_src Window to copy
+ * @param win_dst Window to resize
+ */
+void mutt_window_copy_size(const struct MuttWindow *win_src, struct MuttWindow *win_dst)
+{
+ if (!win_src || !win_dst)
+ return;
+
+ win_dst->rows = win_src->rows;
+ win_dst->cols = win_src->cols;
+ win_dst->row_offset = win_src->row_offset;
+ win_dst->col_offset = win_src->col_offset;
+}
+
/**
* mutt_window_reflow - Resize the Windows to fit the screen
*/
MuttStatusWindow->row_offset = C_StatusOnTop ? 0 : LINES - 2;
MuttStatusWindow->col_offset = 0;
- memcpy(MuttHelpWindow, MuttStatusWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttStatusWindow, MuttHelpWindow);
if (C_Help)
MuttHelpWindow->row_offset = C_StatusOnTop ? LINES - 2 : 0;
else
MuttHelpWindow->rows = 0;
- memcpy(MuttMessageWindow, MuttStatusWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttStatusWindow, MuttMessageWindow);
MuttMessageWindow->row_offset = LINES - 1;
- memcpy(MuttIndexWindow, MuttStatusWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttStatusWindow, MuttIndexWindow);
MuttIndexWindow->rows = MAX(
LINES - MuttStatusWindow->rows - MuttHelpWindow->rows - MuttMessageWindow->rows, 0);
MuttIndexWindow->row_offset =
#ifdef USE_SIDEBAR
if (C_SidebarVisible)
{
- memcpy(MuttSidebarWindow, MuttIndexWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttIndexWindow, MuttSidebarWindow);
MuttSidebarWindow->cols = C_SidebarWidth;
MuttIndexWindow->cols -= C_SidebarWidth;
void mutt_window_clearline (struct MuttWindow *win, int row);
void mutt_window_clrtoeol (struct MuttWindow *win);
+void mutt_window_copy_size (const struct MuttWindow *win_src, struct MuttWindow *win_dst);
void mutt_window_free (struct MuttWindow **ptr);
void mutt_window_free_all (void);
void mutt_window_getxy (struct MuttWindow *win, int *x, int *y);
rd->indicator = rd->indexlen / 3;
- memcpy(rd->pager_window, MuttIndexWindow, sizeof(struct MuttWindow));
- memcpy(rd->pager_status_window, MuttStatusWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttIndexWindow, rd->pager_window);
+ mutt_window_copy_size(MuttStatusWindow, rd->pager_status_window);
rd->index_status_window->rows = 0;
rd->index_window->rows = 0;
if (IsEmail(rd->extra) && (C_PagerIndexLines != 0))
{
- memcpy(rd->index_window, MuttIndexWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttIndexWindow, rd->index_window);
rd->index_window->rows = (rd->indexlen > 0) ? rd->indexlen - 1 : 0;
if (C_StatusOnTop)
{
- memcpy(rd->index_status_window, MuttStatusWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttStatusWindow, rd->index_status_window);
- memcpy(rd->pager_status_window, MuttIndexWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttIndexWindow, rd->pager_status_window);
rd->pager_status_window->rows = 1;
rd->pager_status_window->row_offset += rd->index_window->rows;
}
else
{
- memcpy(rd->index_status_window, MuttIndexWindow, sizeof(struct MuttWindow));
+ mutt_window_copy_size(MuttIndexWindow, rd->index_status_window);
rd->index_status_window->rows = 1;
rd->index_status_window->row_offset += rd->index_window->rows;