- Timestamp:
- May 29, 2010, 1:14:57 PM (14 years ago)
- Branches:
- master, release-1.10, release-1.7, release-1.8, release-1.9
- Children:
- d39f68c
- Parents:
- 6b93305
- git-author:
- David Benjamin <davidben@mit.edu> (05/27/10 13:19:26)
- git-committer:
- David Benjamin <davidben@mit.edu> (05/29/10 13:14:57)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
window.c
r6b93305 rd106110 23 23 void (*redraw_cbdata_destroy)(void *); 24 24 25 void (* resize_cb)(owl_window *, void *);26 void * resize_cbdata;27 void (* resize_cbdata_destroy)(void *);25 void (*size_cb)(owl_window *, void *); 26 void *size_cbdata; 27 void (*size_cbdata_destroy)(void *); 28 28 29 29 void (*destroy_cb)(owl_window *, void *); … … 69 69 /** Creation and Destruction **/ 70 70 71 owl_window *owl_window_new(owl_window *parent , int nlines, int ncols, int begin_y, int begin_x)71 owl_window *owl_window_new(owl_window *parent) 72 72 { 73 73 if (!parent) 74 74 parent = owl_window_get_screen(); 75 return _owl_window_new(parent, nlines, ncols, begin_y, begin_x);75 return _owl_window_new(parent, 0, 0, 0, 0); 76 76 } 77 77 … … 108 108 /* clear all cbs */ 109 109 owl_window_set_redraw_cb(w, 0, 0, 0); 110 owl_window_set_ resize_cb(w, 0, 0, 0);110 owl_window_set_size_cb(w, 0, 0, 0); 111 111 owl_window_set_destroy_cb(w, 0, 0, 0); 112 112 … … 140 140 } 141 141 142 void owl_window_set_resize_cb(owl_window *w, void (*cb)(owl_window*, void*), void *cbdata, void (*cbdata_destroy)(void*)) 143 { 144 if (w->resize_cbdata_destroy) { 145 w->resize_cbdata_destroy(w->resize_cbdata); 146 w->resize_cbdata = 0; 147 w->resize_cbdata_destroy = 0; 148 } 149 150 w->resize_cb = cb; 151 w->resize_cbdata = cbdata; 152 w->resize_cbdata_destroy = cbdata_destroy; 142 void owl_window_set_size_cb(owl_window *w, void (*cb)(owl_window*, void*), void *cbdata, void (*cbdata_destroy)(void*)) 143 { 144 if (w->size_cbdata_destroy) { 145 w->size_cbdata_destroy(w->size_cbdata); 146 w->size_cbdata = 0; 147 w->size_cbdata_destroy = 0; 148 } 149 150 w->size_cb = cb; 151 w->size_cbdata = cbdata; 152 w->size_cbdata_destroy = cbdata_destroy; 153 154 owl_window_recompute_position(w); 153 155 } 154 156 … … 439 441 _owl_window_unmap_internal(w); 440 442 } 441 /* call the resize hooks BEFORE remapping, so that everything can resize */ 442 if (w->resize_cb) 443 w->resize_cb(w, w->resize_cbdata); 443 /* recalculate children sizes BEFORE remapping, so that everything can resize */ 444 owl_window_children_foreach_onearg(w, owl_window_recompute_position); 444 445 if (w->mapped) { 445 446 _owl_window_map_internal(w); … … 451 452 owl_window_set_position(w, nlines, ncols, w->begin_y, w->begin_x); 452 453 } 454 455 void owl_window_recompute_position(owl_window *w) 456 { 457 if (w->size_cb) { 458 /* TODO: size_cb probably wants to actually take four int*s */ 459 w->size_cb(w, w->size_cbdata); 460 } 461 } 462 453 463 454 464 /** Stacking order **/
Note: See TracChangeset
for help on using the changeset viewer.