---
 screen-redraw.c | 77 ++++++++++++++++++++-------------------------------------
 1 file changed, 27 insertions(+), 50 deletions(-)

diff --git a/screen-redraw.c b/screen-redraw.c
index 6131907..1af1bb1 100644
--- a/screen-redraw.c
+++ b/screen-redraw.c
@@ -26,8 +26,6 @@ int   screen_redraw_get_border_rel(struct window_pane *, 
u_int, u_int);
 int    screen_redraw_cell_is_border(struct client *, u_int, u_int);
 int    screen_redraw_get_cell_type(struct client *, u_int, u_int,
            struct window_pane **);
-int    screen_redraw_check_active_pane_indicator(u_int, u_int, int, struct 
window *,
-           struct window_pane *);
 
 void   screen_redraw_draw_number(struct client *, struct window_pane *);
 
@@ -179,48 +177,6 @@ screen_redraw_get_cell_type(struct client *c, u_int px, 
u_int py,
        return (CELL_OUTSIDE);
 }
 
-/* Check active pane indicator. */
-int
-screen_redraw_check_active_pane_indicator(u_int px, u_int py, int type, struct 
window *w,
-    struct window_pane *wp)
-{
-       /* Is this off the active pane border? */
-       if (screen_redraw_get_border_rel(w->active, px, py) == BORDER_NOT)
-               return (0);
-
-       /* If there are more than two panes, that's enough. */
-       if (window_count_panes(w) != 2)
-               return (1);
-
-       /* Else if the cell is not a border cell, forget it. */
-       if (wp == NULL || (type == CELL_OUTSIDE || type == CELL_INSIDE))
-               return (1);
-
-       /* Check if the pane covers the whole width. */
-       if (wp->xoff == 0 && wp->sx == w->sx) {
-               /* This can either be the top pane or the bottom pane. */
-               if (wp->yoff == 0) { /* top pane */
-                       if (wp == w->active)
-                               return (px <= wp->sx / 2);
-                       return (px > wp->sx / 2);
-               }
-               return (0);
-       }
-
-       /* Check if the pane covers the whole height. */
-       if (wp->yoff == 0 && wp->sy == w->sy) {
-               /* This can either be the left pane or the right pane. */
-               if (wp->xoff == 0) { /* left pane */
-                       if (wp == w->active)
-                               return (py <= wp->sy / 2);
-                       return (py > wp->sy / 2);
-               }
-               return (0);
-       }
-
-       return (type);
-}
-
 /* Redraw entire screen. */
 void
 screen_redraw_screen(struct client *c, int status_only, int borders_only)
@@ -283,14 +239,35 @@ screen_redraw_screen(struct client *c, int status_only, 
int borders_only)
                }
                for (i = 0; i < tty->sx; i++) {
                        celltype = screen_redraw_get_cell_type(c, i, j, &wp);
-                       if (celltype == CELL_INSIDE)
+                       if (celltype == CELL_INSIDE || celltype == CELL_OUTSIDE)
                                continue;
-                       borderrel = screen_redraw_get_border_rel(w->active, i, 
j);
-                       if (marktype == 1) /* colorsplit */
-                               tty_attributes(tty, 
screen_redraw_check_active_pane_indicator(i, j, celltype, w, wp) ? &active_gc : 
&other_gc);
-                       else
-                               tty_attributes(tty, borderrel != BORDER_NOT ? 
&active_gc : &other_gc);
 
+                       /* Is this cell on the active pane border? */
+                       borderrel = screen_redraw_get_border_rel(w->active, i, 
j);
+                       switch (borderrel) {
+                       case BORDER_LEFT:
+                       case BORDER_RIGHT:
+                       case BORDER_TOP:
+                       case BORDER_BOTTOM:
+                               if (marktype == 1 /* colorsplit */
+                                   /* If there are more than two panes, that's 
enough. */
+                                   && window_count_panes(w) == 2 && wp) {
+                                       if ((borderrel == BORDER_TOP && i >= 
wp->sx / 2) ||
+                                          (borderrel == BORDER_BOTTOM && i <= 
wp->sx / 2) ||
+                                          (borderrel == BORDER_LEFT && j >= 
wp->sy / 2) ||
+                                          (borderrel == BORDER_RIGHT && j <= 
wp->sy / 2)) {
+                                               tty_attributes(tty, &active_gc);
+                                               break;
+                                       }
+                                       else {
+                                               tty_attributes(tty, &other_gc);
+                                               break;
+                                       }
+                               }
+                               /* Fall through if not drawing colorsplit. */
+                       default:
+                               tty_attributes(tty, borderrel == BORDER_NOT ? 
&other_gc : &active_gc);
+                       }
                        tty_cursor(tty, i, top + j);
 
                        if (marktype == 2 /* arrows */
-- 
1.8.4


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to