diff options
author | Ole Loots <ole@monochrom.net> | 2013-09-10 23:52:56 +0200 |
---|---|---|
committer | Ole Loots <ole@monochrom.net> | 2013-09-10 23:52:56 +0200 |
commit | becc7fe064c2b22a32900a02aee1043fc349425d (patch) | |
tree | 374e09e1a0de004b6126deceb6de58f256a053a6 /atari | |
parent | 65a658769ed25e0cb313f2ac5c1bfcac159a1cf4 (diff) | |
download | netsurf-becc7fe064c2b22a32900a02aee1043fc349425d.tar.gz netsurf-becc7fe064c2b22a32900a02aee1043fc349425d.tar.bz2 |
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).
Diffstat (limited to 'atari')
-rwxr-xr-x | atari/treeview.c | 28 |
1 files 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); |