diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | doc/sample.ratpoisonrc | 5 | ||||
-rw-r--r-- | src/actions.c | 17 | ||||
-rw-r--r-- | src/bar.c | 62 |
4 files changed, 60 insertions, 32 deletions
@@ -1,3 +1,11 @@ +2003-04-06 Shawn Betts <sabetts@sfu.ca> + + * src/bar.c (marked_wrapped_message): make the marked line span + the whole line. + + * src/actions.c (cmd_number): update any frames pointing to the + windows that have changed. + 2003-04-05 Shawn Betts <sabetts@sfu.ca> * src/window.c (get_window_list): if window_list_style is STYLE_COLUMN then diff --git a/doc/sample.ratpoisonrc b/doc/sample.ratpoisonrc index 0fc2d67..93a0c72 100644 --- a/doc/sample.ratpoisonrc +++ b/doc/sample.ratpoisonrc @@ -1,6 +1,6 @@ # This is a sample .ratpoisonrc file # -# $Id: sample.ratpoisonrc,v 1.4 2003/04/05 04:02:17 sabetts Exp $ +# $Id: sample.ratpoisonrc,v 1.5 2003/04/06 10:28:10 sabetts Exp $ # Set the prefix key to that of screen's default escape C-a @@ -21,6 +21,9 @@ bind s colon exec xterm -e freshmeat # bind b (`b' for browse) to interactively ask for an URL to open bind b colon exec mozilla http://www. +# Use the name of the program rather than the title in the window list +defwinname name + # bind M-! to store the current frame layout in slot #1 bind M-exclam exec ratpoison -c "setenv fs1 `ratpoison -c 'fdump'`" diff --git a/src/actions.c b/src/actions.c index 352818c..e287b4d 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1112,6 +1112,7 @@ cmd_time (int interactive, void *data) char * cmd_number (int interactive, void *data) { + rp_window_frame *frame; int old_number, new_number; rp_window *other_win, *win; char *str; @@ -1180,7 +1181,14 @@ cmd_number (int interactive, void *data) old_number = win->number; other_win->number = old_number; - /* Resort the the window in the list */ + /* Update the frame containing the window. */ + if (other_win->frame_number != EMPTY) + { + frame = screen_get_frame (other_win->scr, other_win->frame_number); + frame->win_number = old_number; + } + + /* Resort the window in the list */ list_del (&other_win->node); insert_into_list (other_win, &rp_mapped_window); } @@ -1192,6 +1200,13 @@ cmd_number (int interactive, void *data) win->number = new_number; numset_add_num (rp_window_numset, new_number); + /* Update the frame containing the window. */ + if (win->frame_number != EMPTY) + { + frame = screen_get_frame (win->scr, win->frame_number); + frame->win_number = new_number; + } + /* resort the the window in the list */ list_del (&win->node); insert_into_list (win, &rp_mapped_window); @@ -255,18 +255,13 @@ marked_wrapped_message (char *msg, int mark_start, int mark_end) int num_lines; int line_no=0; char tmp_buf[100]; - - - int width = defaults.bar_x_padding * 2 + max_line_length(msg); - /* XTextWidth (defaults.font, msg, strlen (msg)); */ - int line_height = (FONT_HEIGHT (defaults.font) + defaults.bar_y_padding * 2); + int line_height = (FONT_HEIGHT (defaults.font)); int height; PRINT_DEBUG (("msg = %s\n", msg)); PRINT_DEBUG (("mark_start = %d, mark_end = %d\n", mark_start, mark_end)); - num_lines = count_lines(msg, strlen(msg)); height = line_height * num_lines; @@ -284,33 +279,35 @@ marked_wrapped_message (char *msg, int mark_start, int mark_end) XMoveResizeWindow (dpy, s->bar_window, bar_x (s, width), bar_y (s, height), width, - height); + height + defaults.bar_y_padding * 2); XRaiseWindow (dpy, s->bar_window); XClearWindow (dpy, s->bar_window); XSync (dpy, False); /* if(!defaults.wrap_window_list){ - XDrawString (dpy, s->bar_window, s->normal_gc, - defaults.bar_x_padding, - defaults.bar_y_padding + defaults.font->max_bounds.ascent, - msg, strlen (msg)); - } else { */ + XDrawString (dpy, s->bar_window, s->normal_gc, + defaults.bar_x_padding, + defaults.bar_y_padding + defaults.font->max_bounds.ascent, + msg, strlen (msg)); + } else { */ for(i=0; i<=strlen(msg); ++i) { - if (msg[i]!='\0' && msg[i]!='\n') { - tmp_buf[j]=msg[i]; - j++; - } - else { - tmp_buf[j]='\0'; - XDrawString (dpy, s->bar_window, s->normal_gc, - defaults.bar_x_padding, - defaults.bar_y_padding + defaults.font->max_bounds.ascent - + line_no * line_height, - tmp_buf, strlen(tmp_buf)); - j=0; - line_no++; - } + if (msg[i]!='\0' && msg[i]!='\n') + { + tmp_buf[j]=msg[i]; + j++; + } + else + { + tmp_buf[j]='\0'; + XDrawString (dpy, s->bar_window, s->normal_gc, + defaults.bar_x_padding, + defaults.bar_y_padding + defaults.font->max_bounds.ascent + + line_no * line_height, + tmp_buf, strlen(tmp_buf)); + j=0; + line_no++; + } } @@ -360,7 +357,7 @@ marked_wrapped_message (char *msg, int mark_start, int mark_end) PRINT_DEBUG (("start_line = %d, end_line = %d\n", start_line, end_line)); if (mark_start == 0 || start_pos_in_line == 0) - start = 0; + start = defaults.bar_x_padding; else start = XTextWidth (defaults.font, &msg[start_line_beginning], @@ -373,7 +370,8 @@ marked_wrapped_message (char *msg, int mark_start, int mark_end) if (mark_end != strlen (msg)) end -= defaults.bar_x_padding; - width = end - start; +/* width = end - start; */ + width = max_line_length(msg); PRINT_DEBUG (("start = %d, end = %d, width = %d\n", start, end, width)); @@ -382,12 +380,16 @@ marked_wrapped_message (char *msg, int mark_start, int mark_end) mask = GCForeground | GCFunction; lgc = XCreateGC(dpy, s->root, mask, &lgv); - XFillRectangle (dpy, s->bar_window, lgc, start, (start_line-1)*line_height, width, (end_line-start_line+1)*line_height); + XFillRectangle (dpy, s->bar_window, lgc, + start, (start_line-1)*line_height + defaults.bar_y_padding, + width, (end_line-start_line+1)*line_height); lgv.foreground = s->bg_color; lgc = XCreateGC(dpy, s->root, mask, &lgv); - XFillRectangle (dpy, s->bar_window, lgc, start, (start_line-1)*line_height, width, (end_line-start_line+1)*line_height); + XFillRectangle (dpy, s->bar_window, lgc, + start, (start_line-1)*line_height + defaults.bar_y_padding, + width, (end_line-start_line+1)*line_height); } /* Keep a record of the message. */ |