Here's the structs for my window(s):
Code:
struct _display {
int top_limit;
int bottom_limit;
int current;
int max_y;
int max_x;
int total;
};
typedef struct _sub_window {
WINDOW *win;
struct _display *display;
} Sub_window;
typedef struct _wnode {
WINDOW *win;
struct _sub_window sub_window;
struct _display *display;
struct _wnode *next;
struct _wnode *prev;
} Windownode;
Within my main Windownode, I found the need to have another derived window within it, so I'm trying to add that derived window with this...
Code:
int init_sub_window(Windownode **node, int sub_rows, int sub_cols, int start_y, int start_x)
{
WINDOW *derived_window;
struct _display *local_display;
Sub_window *temp;
temp = safemalloc(sizeof(Sub_window));
local_display = safemalloc(sizeof(struct _display));
/* TODO: Safe malloc for derived windows. */
derived_window = derwin((*node)->win, (*node)->display->max_y - sub_rows, (*node)->display->max_x - sub_cols, \
start_y, start_x);
if(!derived_window) {
fprintf(stderr, "Error in derived window allocation!");
exit(1);
}
temp->win = derived_window;
temp->display = local_display;
getmaxyx(temp->win, temp->display->max_y, temp->display->max_x);
temp->display->top_limit = 0;
temp->display->bottom_limit = temp->display->max_y;
temp->display->current = 0;
temp->display->total = 0;
(*node)->sub_window = temp;
}
In main, I'm calling the function like this...
Code:
init_sub_window(&win_parent[MAIN], 4, 2, 1, 1);
But, the error I'm getting for this setup is...
Code:
gcc -g3 -c main.c
gcc -g3 -c color.c
gcc -g3 -c print.c
gcc -g3 -c tree.c
gcc -g3 -c window.c
window.c: In function 'init_sub_window':
window.c:81: error: incompatible types in assignment
make: *** [window.o] Error 1
Line 81 is that last line, (*node)->sub_window = temp;. Within the function, I've tried *node->sub_window, (*node)->sub_window, and *(node)->sub_window, but no success. Where I get the derived window part of the function, where I have (*node)->win and all, I don't get any errors, but that was after tinkering with the parentheses and asterisk. I don't think I understand why those take but the (*node)->sub_window at the bottom doesn't. What I had thought about doing was passing the parent window's Sub_window AND the entire parent window's structure so that I could get it's max_y and max_x, but that seems to be overkill. What am I doing wrong? Thanks.