about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-01-15 00:14:12 +0000
committerJames Booth <boothj5@gmail.com>2015-01-15 00:14:12 +0000
commit97aebb6113a7d9683a9d3258f2ac5b1e7b98cc61 (patch)
tree68364a48331fad79915b7a436097e2eee0d97164
parentdb9a2cf0ab40912d1d342b8ad3dfacbf8776411a (diff)
downloadprofani-tty-97aebb6113a7d9683a9d3258f2ac5b1e7b98cc61.tar.gz
Moved win_handle_page to window module
-rw-r--r--src/ui/core.c115
-rw-r--r--src/ui/window.c110
-rw-r--r--src/ui/window.h3
3 files changed, 115 insertions, 113 deletions
diff --git a/src/ui/core.c b/src/ui/core.c
index 5b621ba1..2873b693 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -81,7 +81,6 @@ static Display *display;
 static GTimer *ui_idle_time;
 
 static void _win_handle_switch(const wint_t ch);
-static void _win_handle_page(const wint_t ch, const int result);
 static void _win_show_history(int win_index, const char * const contact);
 static void _ui_draw_term_title(void);
 
@@ -180,7 +179,8 @@ ui_get_char(char *input, int *size)
     int result = 0;
     wint_t ch = inp_get_char(input, size, &result);
     _win_handle_switch(ch);
-    _win_handle_page(ch, result);
+    ProfWin *current = wins_get_current();
+    win_handle_page(current, ch, result);
     if (ch == KEY_RESIZE) {
         ui_resize();
     }
@@ -2958,117 +2958,6 @@ _win_handle_switch(const wint_t ch)
 }
 
 static void
-_win_handle_page(const wint_t ch, const int result)
-{
-    ProfWin *current = wins_get_current();
-    int rows = getmaxy(stdscr);
-    int y = getcury(current->layout->win);
-
-    int page_space = rows - 4;
-    int *page_start = &(current->layout->y_pos);
-
-    if (prefs_get_boolean(PREF_MOUSE)) {
-        MEVENT mouse_event;
-
-        if (ch == KEY_MOUSE) {
-            if (getmouse(&mouse_event) == OK) {
-
-#ifdef PLATFORM_CYGWIN
-                if (mouse_event.bstate & BUTTON5_PRESSED) { // mouse wheel down
-#else
-                if (mouse_event.bstate & BUTTON2_PRESSED) { // mouse wheel down
-#endif
-                    *page_start += 4;
-
-                    // only got half a screen, show full screen
-                    if ((y - (*page_start)) < page_space)
-                        *page_start = y - page_space;
-
-                    // went past end, show full screen
-                    else if (*page_start >= y)
-                        *page_start = y - page_space;
-
-                    current->layout->paged = 1;
-                    win_update_virtual(current);
-                } else if (mouse_event.bstate & BUTTON4_PRESSED) { // mouse wheel up
-                    *page_start -= 4;
-
-                    // went past beginning, show first page
-                    if (*page_start < 0)
-                        *page_start = 0;
-
-                    current->layout->paged = 1;
-                    win_update_virtual(current);
-                }
-            }
-        }
-    }
-
-    // page up
-    if (ch == KEY_PPAGE) {
-        *page_start -= page_space;
-
-        // went past beginning, show first page
-        if (*page_start < 0)
-            *page_start = 0;
-
-        current->layout->paged = 1;
-        win_update_virtual(current);
-
-    // page down
-    } else if (ch == KEY_NPAGE) {
-        *page_start += page_space;
-
-        // only got half a screen, show full screen
-        if ((y - (*page_start)) < page_space)
-            *page_start = y - page_space;
-
-        // went past end, show full screen
-        else if (*page_start >= y)
-            *page_start = y - page_space - 1;
-
-        current->layout->paged = 1;
-        win_update_virtual(current);
-    }
-
-    // switch off page if last line and space line visible
-    if ((y) - *page_start == page_space) {
-        current->layout->paged = 0;
-    }
-
-    if (current->layout->type == LAYOUT_SPLIT) {
-        ProfLayoutSplit *split_layout = (ProfLayoutSplit*)current->layout;
-        int sub_y = getcury(split_layout->subwin);
-        int *sub_y_pos = &(split_layout->sub_y_pos);
-
-        // alt up arrow
-        if ((result == KEY_CODE_YES) && ((ch == 565) || (ch == 337))) {
-            *sub_y_pos -= page_space;
-
-            // went past beginning, show first page
-            if (*sub_y_pos < 0)
-                *sub_y_pos = 0;
-
-            win_update_virtual(current);
-
-        // alt down arrow
-        } else if ((result == KEY_CODE_YES) && ((ch == 524) || (ch == 336))) {
-            *sub_y_pos += page_space;
-
-            // only got half a screen, show full screen
-            if ((sub_y- (*sub_y_pos)) < page_space)
-                *sub_y_pos = sub_y - page_space;
-
-            // went past end, show full screen
-            else if (*sub_y_pos >= sub_y)
-                *sub_y_pos = sub_y - page_space - 1;
-
-            win_update_virtual(current);
-        }
-    }
-}
-
-static void
 _win_show_history(int win_index, const char * const contact)
 {
     ProfWin *window = wins_get_by_num(win_index);
diff --git a/src/ui/window.c b/src/ui/window.c
index 3a45ab01..dfec5aab 100644
--- a/src/ui/window.c
+++ b/src/ui/window.c
@@ -358,6 +358,116 @@ win_free(ProfWin* window)
 }
 
 void
+win_handle_page(ProfWin *window, const wint_t ch, const int result)
+{
+    int rows = getmaxy(stdscr);
+    int y = getcury(window->layout->win);
+
+    int page_space = rows - 4;
+    int *page_start = &(window->layout->y_pos);
+
+    if (prefs_get_boolean(PREF_MOUSE)) {
+        MEVENT mouse_event;
+
+        if (ch == KEY_MOUSE) {
+            if (getmouse(&mouse_event) == OK) {
+
+#ifdef PLATFORM_CYGWIN
+                if (mouse_event.bstate & BUTTON5_PRESSED) { // mouse wheel down
+#else
+                if (mouse_event.bstate & BUTTON2_PRESSED) { // mouse wheel down
+#endif
+                    *page_start += 4;
+
+                    // only got half a screen, show full screen
+                    if ((y - (*page_start)) < page_space)
+                        *page_start = y - page_space;
+
+                    // went past end, show full screen
+                    else if (*page_start >= y)
+                        *page_start = y - page_space;
+
+                    window->layout->paged = 1;
+                    win_update_virtual(window);
+                } else if (mouse_event.bstate & BUTTON4_PRESSED) { // mouse wheel up
+                    *page_start -= 4;
+
+                    // went past beginning, show first page
+                    if (*page_start < 0)
+                        *page_start = 0;
+
+                    window->layout->paged = 1;
+                    win_update_virtual(window);
+                }
+            }
+        }
+    }
+
+    // page up
+    if (ch == KEY_PPAGE) {
+        *page_start -= page_space;
+
+        // went past beginning, show first page
+        if (*page_start < 0)
+            *page_start = 0;
+
+        window->layout->paged = 1;
+        win_update_virtual(window);
+
+    // page down
+    } else if (ch == KEY_NPAGE) {
+        *page_start += page_space;
+
+        // only got half a screen, show full screen
+        if ((y - (*page_start)) < page_space)
+            *page_start = y - page_space;
+
+        // went past end, show full screen
+        else if (*page_start >= y)
+            *page_start = y - page_space - 1;
+
+        window->layout->paged = 1;
+        win_update_virtual(window);
+    }
+
+    // switch off page if last line and space line visible
+    if ((y) - *page_start == page_space) {
+        window->layout->paged = 0;
+    }
+
+    if (window->layout->type == LAYOUT_SPLIT) {
+        ProfLayoutSplit *split_layout = (ProfLayoutSplit*)window->layout;
+        int sub_y = getcury(split_layout->subwin);
+        int *sub_y_pos = &(split_layout->sub_y_pos);
+
+        // alt up arrow
+        if ((result == KEY_CODE_YES) && ((ch == 565) || (ch == 337))) {
+            *sub_y_pos -= page_space;
+
+            // went past beginning, show first page
+            if (*sub_y_pos < 0)
+                *sub_y_pos = 0;
+
+            win_update_virtual(window);
+
+        // alt down arrow
+        } else if ((result == KEY_CODE_YES) && ((ch == 524) || (ch == 336))) {
+            *sub_y_pos += page_space;
+
+            // only got half a screen, show full screen
+            if ((sub_y- (*sub_y_pos)) < page_space)
+                *sub_y_pos = sub_y - page_space;
+
+            // went past end, show full screen
+            else if (*sub_y_pos >= sub_y)
+                *sub_y_pos = sub_y - page_space - 1;
+
+            win_update_virtual(window);
+        }
+    }
+}
+
+void
 win_update_virtual(ProfWin *window)
 {
     int rows, cols;
diff --git a/src/ui/window.h b/src/ui/window.h
index b6bd0298..fd10a1d7 100644
--- a/src/ui/window.h
+++ b/src/ui/window.h
@@ -37,6 +37,8 @@
 
 #include "config.h"
 
+#include <wchar.h>
+
 #ifdef HAVE_NCURSESW_NCURSES_H
 #include <ncursesw/ncurses.h>
 #elif HAVE_NCURSES_H
@@ -176,6 +178,7 @@ void win_show_subwin(ProfWin *window);
 int win_roster_cols(void);
 int win_occpuants_cols(void);
 void win_printline_nowrap(WINDOW *win, char *msg);
+void win_handle_page(ProfWin *current, const wint_t ch, const int result);
 
 int win_unread(ProfWin *window);
 gboolean win_has_active_subwin(ProfWin *window);