Fix handling of REQ_NEXT/REQ_PREVIOUS
[tig] / tig.c
diff --git a/tig.c b/tig.c
index 95cad92..c3bc1f4 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -1371,7 +1371,7 @@ update_view_title(struct view *view)
 
        assert(view_is_displayed(view));
 
-       if (!VIEW(REQ_VIEW_STATUS) && (view->lines || view->pipe)) {
+       if (view != VIEW(REQ_VIEW_STATUS) && (view->lines || view->pipe)) {
                unsigned int view_lines = view->offset + view->height;
                unsigned int lines = view->lines
                                   ? MIN(view_lines, view->lines) * 100 / view->lines
@@ -2221,14 +2221,14 @@ view_driver(struct view *view, enum request request)
                        move_view(view, request);
                        if (view_is_displayed(view))
                                update_view_title(view);
-                       if (line == view->lineno)
-                               break;
+                       if (line != view->lineno)
+                               view->ops->request(view, REQ_ENTER,
+                                                  &view->line[view->lineno]);
+
                } else {
                        move_view(view, request);
-                       break;
                }
-               /* Fall-through */
-
+               break;
 
        case REQ_VIEW_NEXT:
        {
@@ -2293,6 +2293,11 @@ view_driver(struct view *view, enum request request)
 
        case REQ_EDIT:
                report("Nothing to edit");
+               break;
+
+       case REQ_ENTER:
+               report("Nothing to enter");
+               break;
 
        case REQ_NONE:
                doupdate();