Checked for 0 window size in glk_window_move_cursor().
[rodin/chimara.git] / libchimara / window.c
index fc407f751ed1ea71d0b13829f76745db197b1ad3..8b695315326629157e1dba292ca3b759818a0578 100644 (file)
@@ -375,7 +375,7 @@ glk_window_open(winid_t split, glui32 method, glui32 size, glui32 wintype,
 {
        VALID_WINDOW_OR_NULL(split, return NULL);
        g_return_val_if_fail(method == (method & (winmethod_DirMask | winmethod_DivisionMask)), NULL);
-       g_return_val_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size >= 100), NULL);    
+       g_return_val_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size > 100), NULL);     
 
        if(split == NULL && glk_data->root_window != NULL)
        {
@@ -1120,7 +1120,7 @@ glk_window_set_arrangement(winid_t win, glui32 method, glui32 size, winid_t keyw
                g_return_if_fail(g_node_is_ancestor(win->window_node, keywin->window_node));
        }
        g_return_if_fail(method == (method & (winmethod_DirMask | winmethod_DivisionMask)));
-       g_return_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size >= 100));
+       g_return_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size > 100));
        
        win->split_method = method;
        win->constraint_size = size;
@@ -1193,6 +1193,10 @@ glk_window_move_cursor(winid_t win, glui32 xpos, glui32 ypos)
        VALID_WINDOW(win, return);
        g_return_if_fail(win->type == wintype_TextGrid);
        
+       /* Don't do anything if the window is shrunk down to nothing */
+       if(win->width == 0 || win->height == 0)
+               return;
+       
        /* Calculate actual position if cursor is moved past the right edge */
        if(xpos >= win->width)
        {