Teaching an old dog new tricks
No Matches
rootwin.c File Reference

Root Window. More...

#include "config.h"
#include <stdbool.h>
#include <string.h>
#include "mutt/lib.h"
#include "config/lib.h"
#include "core/lib.h"
#include "helpbar/lib.h"
#include "dialog.h"
#include "msgcont.h"
#include "msgwin.h"
#include "mutt_window.h"
+ Include dependency graph for rootwin.c:

Go to the source code of this file.


void mutt_resize_screen (void)
 Update NeoMutt's opinion about the window size.
static int rootwin_config_observer (struct NotifyCallback *nc)
 Notification that a Config Variable has changed - Implements observer_t -.
static int rootwin_resize_observer (struct NotifyCallback *nc)
 Notification that the terminal has been resized - Implements observer_t -.
static int rootwin_window_observer (struct NotifyCallback *nc)
 Notification that a Window has changed - Implements observer_t -.
void rootwin_cleanup (void)
 Free all the default Windows.
void rootwin_new (void)
 Create the default Windows.
void rootwin_set_size (int cols, int rows)
 Set the dimensions of the Root Window.


struct MuttWindowRootWindow = NULL
 Parent of all Windows.

Detailed Description

Root Window.

  • Richard Russon

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see

Definition in file rootwin.c.

Function Documentation

◆ mutt_resize_screen()

void mutt_resize_screen ( void  )

Update NeoMutt's opinion about the window size.

Definition at line 74 of file resize.c.

76 struct winsize w = mutt_get_winsize();
78 int screenrows = w.ws_row;
79 int screencols = w.ws_col;
81 if (screenrows <= 0)
82 {
83 const char *cp = mutt_str_getenv("LINES");
84 if (cp && !mutt_str_atoi_full(cp, &screenrows))
85 screenrows = 24;
86 }
88 if (screencols <= 0)
89 {
90 const char *cp = mutt_str_getenv("COLUMNS");
91 if (cp && !mutt_str_atoi_full(cp, &screencols))
92 screencols = 80;
93 }
95 resizeterm(screenrows, screencols);
96 rootwin_set_size(screencols, screenrows);
const char * mutt_str_getenv(const char *name)
Get an environment variable.
Definition: string.c:918
void window_notify_all(struct MuttWindow *win)
Notify observers of changes to a Window and its children.
Definition: mutt_window.c:145
static struct winsize mutt_get_winsize(void)
Get the window size.
Definition: resize.c:54
void rootwin_set_size(int cols, int rows)
Set the dimensions of the Root Window.
Definition: rootwin.c:251
+ Here is the caller graph for this function:

◆ rootwin_cleanup()

void rootwin_cleanup ( void  )

Free all the default Windows.

Definition at line 202 of file rootwin.c.

void mutt_window_free(struct MuttWindow **ptr)
Free a Window and its children.
Definition: mutt_window.c:202
struct MuttWindow * RootWindow
Parent of all Windows.
Definition: rootwin.c:106
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rootwin_new()

void rootwin_new ( void  )

Create the default Windows.

Create the Help, Index, Status, Message and Sidebar Windows.

Definition at line 212 of file rootwin.c.

217 RootWindow = win_root;
219 struct MuttWindow *win_helpbar = helpbar_new();
220 struct MuttWindow *win_alldlgs = alldialogs_new();
222 const bool c_status_on_top = cs_subset_bool(NeoMutt->sub, "status_on_top");
223 if (c_status_on_top)
224 {
225 mutt_window_add_child(win_root, win_alldlgs);
226 mutt_window_add_child(win_root, win_helpbar);
227 }
228 else
229 {
230 mutt_window_add_child(win_root, win_helpbar);
231 mutt_window_add_child(win_root, win_alldlgs);
232 }
234 struct MuttWindow *win_cont = msgcont_new();
235 struct MuttWindow *win_msg = msgwin_new(false);
236 mutt_window_add_child(win_cont, win_msg);
237 mutt_window_add_child(win_root, win_cont);
bool cs_subset_bool(const struct ConfigSubset *sub, const char *name)
Get a boolean config item by name.
Definition: helpers.c:48
struct MuttWindow * alldialogs_new(void)
Create the AllDialogs Window.
Definition: dialog.c:210
static int rootwin_config_observer(struct NotifyCallback *nc)
Notification that a Config Variable has changed - Implements observer_t -.
Definition: rootwin.c:113
static int rootwin_resize_observer(struct NotifyCallback *nc)
Notification that the terminal has been resized - Implements observer_t -.
Definition: rootwin.c:153
static int rootwin_window_observer(struct NotifyCallback *nc)
Notification that a Window has changed - Implements observer_t -.
Definition: rootwin.c:174
struct MuttWindow * helpbar_new(void)
Create the Help Bar Window.
Definition: helpbar.c:333
struct MuttWindow * msgcont_new(void)
Create a new Message Container.
Definition: msgcont.c:46
struct MuttWindow * msgwin_new(bool interactive)
Create the Message Window.
Definition: msgwin.c:373
bool notify_observer_add(struct Notify *notify, enum NotifyType type, observer_t callback, void *global_data)
Add an observer to an object.
Definition: notify.c:191
void notify_set_parent(struct Notify *notify, struct Notify *parent)
Set the parent notification handler.
Definition: notify.c:95
void mutt_window_add_child(struct MuttWindow *parent, struct MuttWindow *child)
Add a child to Window.
Definition: mutt_window.c:446
struct MuttWindow * mutt_window_new(enum WindowType type, enum MuttWindowOrientation orient, enum MuttWindowSize size, int cols, int rows)
Create a new Window.
Definition: mutt_window.c:182
Parent of All Windows.
Definition: mutt_window.h:72
Window uses all available vertical space.
Definition: mutt_window.h:38
Window has a fixed size.
Definition: mutt_window.h:47
MuttWindow has changed, NotifyWindow, EventWindow.
Definition: notify_type.h:57
Config has changed, NotifyConfig, EventConfig.
Definition: notify_type.h:43
Window has been resized.
Definition: notify_type.h:52
struct Notify * notify
Notifications: NotifyConfig, EventConfig.
Definition: subset.h:52
struct Notify * notify
Notifications: NotifyWindow, EventWindow.
Definition: mutt_window.h:138
Container for Accounts, Notifications.
Definition: neomutt.h:41
struct Notify * notify_resize
Window resize notifications handler.
Definition: neomutt.h:43
struct Notify * notify
Notifications handler.
Definition: neomutt.h:42
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:45
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rootwin_set_size()

void rootwin_set_size ( int  cols,
int  rows 

Set the dimensions of the Root Window.

rowsNumber of rows on the screen
colsNumber of columns on the screen

This function is called after NeoMutt receives a SIGWINCH signal.

Definition at line 251 of file rootwin.c.

253 if (!RootWindow)
254 return;
256 bool changed = false;
258 if (RootWindow->state.rows != rows)
259 {
260 RootWindow->state.rows = rows;
261 changed = true;
262 }
264 if (RootWindow->state.cols != cols)
265 {
266 RootWindow->state.cols = cols;
267 changed = true;
268 }
270 if (changed)
271 {
273 }
void mutt_window_reflow(struct MuttWindow *win)
Resize a Window and its children.
Definition: mutt_window.c:344
struct WindowState state
Current state of the Window.
Definition: mutt_window.h:127
short cols
Number of columns, can be MUTT_WIN_SIZE_UNLIMITED.
Definition: mutt_window.h:60
short rows
Number of rows, can be MUTT_WIN_SIZE_UNLIMITED.
Definition: mutt_window.h:61
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ RootWindow

struct MuttWindow* RootWindow = NULL

Parent of all Windows.

Definition at line 106 of file rootwin.c.