From becc7fe064c2b22a32900a02aee1043fc349425d Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Tue, 10 Sep 2013 23:52:56 +0200 Subject: Set window ref before calling tree_create. Fixes crash during startup. (tree_create causes an resize event which requires the window handle to be available). --- atari/treeview.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/atari/treeview.c b/atari/treeview.c index f25bf7eed..d03ff219a 100755 --- a/atari/treeview.c +++ b/atari/treeview.c @@ -259,25 +259,38 @@ NSTREEVIEW atari_treeview_create(uint32_t flags, GUIWIN *win, gemtk_wm_event_handler_f user_func) { struct gemtk_wm_scroll_info_s *slid; + NSTREEVIEW new; if( win == NULL ) return( NULL ); - NSTREEVIEW new = malloc(sizeof(struct atari_treeview)); + + new = malloc(sizeof(struct atari_treeview)); if (new == NULL) return NULL; - memset( new, 0, sizeof(struct atari_treeview)); - new->tree = tree_create(flags, &atari_tree_callbacks, new); - if (new->tree == NULL) { - free(new); - return NULL; - } + + memset(new, 0, sizeof(struct atari_treeview)); + + /* Store the window ref inside the new treeview: */ new->window = win; new->user_func = user_func; + // Setup gemtk event handler function and set the userdata + // to be the new treeview: gemtk_wm_set_event_handler(win, handle_event); gemtk_wm_set_user_data(win, (void*)new); + // now create a new netsurf tree: + new->tree = tree_create(flags, &atari_tree_callbacks, new); + if (new->tree == NULL) { + free(new); + return NULL; + } + + // Get acces to the gemtk scroll info struct: slid = gemtk_wm_get_scroll_info(new->window); + + // Setup line and column height/width of the window, + // each scroll takes the configured steps: slid->y_unit_px = 16; slid->x_unit_px = 16; @@ -462,6 +475,7 @@ void atari_treeview_resized(struct tree *tree, int width, int height, void *pw) NSTREEVIEW tv = (NSTREEVIEW) pw; if( tv->disposing ) return; + tv->extent.x = width; tv->extent.y = height; struct gemtk_wm_scroll_info_s *slid = gemtk_wm_get_scroll_info(tv->window); -- cgit v1.2.3