Changeset 3c8c580 in mainline for uspace/lib/ui/src/menu.c
- Timestamp:
- 2021-06-10T13:22:33Z (3 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c68c18b9
- Parents:
- d091007
- git-author:
- Jiri Svoboda <jiri@…> (2021-05-20 15:34:03)
- git-committer:
- jxsvoboda <5887334+jxsvoboda@…> (2021-06-10 13:22:33)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/menu.c
rd091007 r3c8c580 45 45 #include <ui/control.h> 46 46 #include <ui/paint.h> 47 #include <ui/popup.h> 47 48 #include <ui/menu.h> 48 49 #include <ui/menuentry.h> … … 59 60 }; 60 61 62 static void ui_menu_popup_pos(ui_popup_t *, void *, pos_event_t *); 63 64 static ui_popup_cb_t ui_menu_popup_cb = { 65 .pos = ui_menu_popup_pos 66 }; 67 61 68 /** Create new menu. 62 69 * … … 203 210 } 204 211 212 /** Get UI resource from menu. 213 * 214 * @param menu Menu 215 * @return UI resource 216 */ 217 ui_resource_t *ui_menu_get_res(ui_menu_t *menu) 218 { 219 return ui_popup_get_res(menu->popup); 220 } 221 222 /** Open menu. 223 * 224 * @param menu Menu 225 * @param prect Parent rectangle around which the menu should be placed 226 */ 227 errno_t ui_menu_open(ui_menu_t *menu, gfx_rect_t *prect) 228 { 229 ui_popup_t *popup = NULL; 230 ui_popup_params_t params; 231 ui_menu_geom_t geom; 232 gfx_coord2_t mpos; 233 errno_t rc; 234 235 /* Determine menu dimensions */ 236 237 mpos.x = 0; 238 mpos.y = 0; 239 ui_menu_get_geom(menu, &mpos, &geom); 240 241 ui_popup_params_init(¶ms); 242 params.rect = geom.outer_rect; 243 244 rc = ui_popup_create(menu->mbar->ui, ¶ms, &popup); 245 if (rc != EOK) 246 return rc; 247 248 menu->popup = popup; 249 ui_popup_set_cb(popup, &ui_menu_popup_cb, menu); 250 251 return ui_menu_paint(menu, &mpos); 252 } 253 254 /** Close menu. 255 * 256 * @param menu Menu 257 */ 258 void ui_menu_close(ui_menu_t *menu) 259 { 260 ui_popup_destroy(menu->popup); 261 menu->popup = NULL; 262 } 263 205 264 /** Paint menu. 206 265 * … … 218 277 errno_t rc; 219 278 220 res = menu->mbar->res;279 res = ui_menu_get_res(menu); 221 280 ui_menu_get_geom(menu, spos, &geom); 222 281 … … 261 320 error: 262 321 return rc; 263 }264 265 /** Unpaint menu.266 *267 * @param menu Menu268 * @return EOK on success or an error code269 */270 errno_t ui_menu_unpaint(ui_menu_t *menu)271 {272 ui_resource_expose(menu->mbar->res);273 return EOK;274 322 } 275 323 … … 312 360 } else { 313 361 /* Press outside menu - close it */ 314 if (event->type == POS_PRESS)315 ui_menu_bar_select(menu->mbar, NULL, NULL);362 // if (event->type == POS_PRESS) 363 // ui_menu_bar_select(menu->mbar, NULL, NULL); 316 364 } 317 365 … … 319 367 } 320 368 369 /** Handle position event in menu popup window. 370 * 371 * @param popup Menu popup window 372 * @param arg Argument (ui_menu_t *) 373 * @param event Position event 374 */ 375 static void ui_menu_popup_pos(ui_popup_t *popup, void *arg, pos_event_t *event) 376 { 377 ui_menu_t *menu = (ui_menu_t *)arg; 378 gfx_coord2_t spos; 379 380 spos.x = 0; 381 spos.y = 0; 382 ui_menu_pos_event(menu, &spos, event); 383 } 384 321 385 /** @} 322 386 */
Note:
See TracChangeset
for help on using the changeset viewer.