- Timestamp:
- Jun 1, 2010, 1:27:14 AM (15 years ago)
- Branches:
- master, release-1.10, release-1.7, release-1.8, release-1.9
- Children:
- 05ca0d8
- Parents:
- 7a70e26
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
popwin.c
r053f751 r7a6e6c7 11 11 pw->border = owl_window_new(NULL); 12 12 pw->content = owl_window_new(pw->border); 13 owl_window_set_redraw_cb(pw->border, owl_popwin_draw_border, pw, 0); 14 owl_window_set_size_cb(pw->border, owl_popwin_size_border, 0, 0); 15 owl_window_set_size_cb(pw->content, owl_popwin_size_content, 0, 0); 13 g_signal_connect(pw->border, "redraw", G_CALLBACK(owl_popwin_draw_border), 0); 14 pw->screen_resize_id = g_signal_connect_object(owl_window_get_screen(), "resized", G_CALLBACK(owl_popwin_size_border), pw->border, 0); 15 g_signal_connect_object(pw->border, "resized", G_CALLBACK(owl_popwin_size_content), pw->content, 0); 16 17 /* bootstrap sizing */ 18 owl_popwin_size_border(owl_window_get_screen(), pw->border); 19 16 20 owl_window_show_all(pw->border); 17 21 … … 20 24 } 21 25 22 void owl_popwin_size_border(owl_window * border, void *user_data)26 void owl_popwin_size_border(owl_window *parent, void *user_data) 23 27 { 24 28 int lines, cols, startline, startcol; 25 29 int glines, gcols; 26 owl_window * parent = owl_window_get_parent(border);30 owl_window *border = user_data; 27 31 28 32 owl_window_get_position(parent, &glines, &gcols, 0, 0); … … 36 40 } 37 41 38 void owl_popwin_size_content(owl_window * content, void *user_data)42 void owl_popwin_size_content(owl_window *parent, void *user_data) 39 43 { 40 44 int lines, cols; 41 owl_window * parent = owl_window_get_parent(content);45 owl_window *content = user_data; 42 46 owl_window_get_position(parent, &lines, &cols, 0, 0); 43 47 owl_window_set_position(content, lines-2, cols-2, 1, 1); … … 68 72 g_object_unref(pw->border); 69 73 g_object_unref(pw->content); 74 75 /* See comment on g_signal_connect_object; it only prevents the closure from 76 * being invoked. The signal handler itself still gets leaked. The other 77 * signal is okay, since we delete both at the same time. */ 78 if (g_signal_handler_is_connected(owl_window_get_screen(), pw->screen_resize_id)) 79 g_signal_handler_disconnect(owl_window_get_screen(), pw->screen_resize_id); 80 70 81 pw->border = 0; 71 82 pw->content = 0;
Note: See TracChangeset
for help on using the changeset viewer.