fixed missing color check
[smdp.git] / src / viewer.c
index 13874d8..d106a62 100644 (file)
@@ -2,7 +2,7 @@
  * Functions necessary to display a deck of slides in different color modes
  * using ncurses. Only white, red, and blue are supported, as they can be
  * faded in 256 color mode.
- * Copyright (C) 2015 Michael Goehler
+ * Copyright (C) 2016 Michael Goehler
  *
  * This file is part of mdp.
  *
@@ -93,11 +93,10 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
 
         while(line && line->text) {
 
-            if (line->text->value)
+            if (line->text->value) {
                 lc += url_count_inline(line->text->value);
-
-            if (line->text->value)
                 line->length -= url_len_inline(line->text->value);
+            }
 
             if(line->length > COLS) {
                 i = line->length;
@@ -371,11 +370,15 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
                     // show current slide again
                     // but stop one stop bit earlier
                     slide->stop--;
+                    fade = false;
                 } else {
                     if(slide->prev) {
                         // show previous slide
                         slide = slide->prev;
                         sc--;
+                        //stop on first bullet point always
+                        if(slide->stop > 0)
+                            slide->stop = 0;
                     } else {
                         // do nothing
                         fade = false;
@@ -395,6 +398,7 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
                     // show current slide again
                     // but stop one stop bit later (or at end of slide)
                     slide->stop++;
+                    fade = false;
                 } else {
                     if(slide->next) {
                         // show next slide
@@ -506,16 +510,26 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
 
 void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colors) {
 
-    if(!line->text->value) {
-        return;
-    }
-
     int i; // increment
     int offset = 0; // text offset
 
     // move the cursor in position
     wmove(window, y, x);
 
+    if(!line->text->value) {
+
+        // fill rest off line with spaces if we are in a code block
+        if(CHECK_BIT(line->bits, IS_CODE) && colors) {
+            if(colors)
+                wattron(window, COLOR_PAIR(CP_BLACK));
+            for(i = getcurx(window) - x; i < max_cols; i++)
+                wprintw(window, "%s", " ");
+        }
+
+        // do nothing
+        return;
+    }
+
     // IS_UNORDERED_LIST_3
     if(CHECK_BIT(line->bits, IS_UNORDERED_LIST_3)) {
         offset = next_nonblank(line->text, 0);
@@ -577,8 +591,10 @@ void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colo
     // IS_CODE
     if(CHECK_BIT(line->bits, IS_CODE)) {
 
-        // set static offset for code
-        offset = CODE_INDENT;
+        if (!CHECK_BIT(line->bits, IS_TILDE_CODE)) {
+            // set static offset for code
+            offset = CODE_INDENT;
+        }
 
         // reverse color for code blocks
         if(colors)