diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/messages.h | 2 | ||||
-rw-r--r-- | src/split.c | 23 |
3 files changed, 23 insertions, 7 deletions
@@ -1,3 +1,8 @@ +2006-11-18 Shawn Betts <sabetts@vcn.bc.ca> + + * src/split.c (show_frame_message): handle the case when the frame + is empty. + 2006-11-17 Shawn Betts <sabetts@vcn.bc.ca> * src/bar.c (bar_y): take into account screen padding diff --git a/src/messages.h b/src/messages.h index e85b5d4..47f2563 100644 --- a/src/messages.h +++ b/src/messages.h @@ -51,4 +51,6 @@ #define MESSAGE_WELCOME "Welcome to ratpoison! Hit `%s %s' for help." +#define EMPTY_FRAME_MESSAGE "Current Frame" + #endif /* ! _RATPOISON_MESSAGES_H */ diff --git a/src/split.c b/src/split.c index ba4cd3b..ce9bb35 100644 --- a/src/split.c +++ b/src/split.c @@ -971,18 +971,27 @@ show_frame_message (char *msg) int width, height; rp_frame *frame; rp_window *win; - rp_group *g; - rp_window_elem *elem; + rp_window_elem *elem = NULL; struct sbuf *msgbuf; frame = current_frame(); - win = current_window (); - g = groups_find_group_by_window (win); - elem = group_find_window (&g->mapped_windows, win); - msgbuf = sbuf_new (0); + if (win) + { + rp_group *g; + + g = groups_find_group_by_window (win); + elem = group_find_window (&g->mapped_windows, win); + } - format_string (msg, elem, msgbuf); + /* A frame doesn't always contain a window. */ + msgbuf = sbuf_new (0); + if (elem) + format_string (msg, elem, msgbuf); + else + { + sbuf_concat (msgbuf, EMPTY_FRAME_MESSAGE); + } width = defaults.bar_x_padding * 2 + XmbTextEscapement (defaults.font, msgbuf->data, msgbuf->len); |