diff options
Diffstat (limited to 'src/editor/editor_menubar.cpp')
| -rw-r--r-- | src/editor/editor_menubar.cpp | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/src/editor/editor_menubar.cpp b/src/editor/editor_menubar.cpp index cef2650..0a6f661 100644 --- a/src/editor/editor_menubar.cpp +++ b/src/editor/editor_menubar.cpp @@ -1,3 +1,4 @@ +#include "editor.h" #include "editor_gui_internal.h" U8 editor_menu_hover_mask_active = 0; @@ -36,7 +37,15 @@ void editor_apply_view_mode( GAME_EDITOR* e ) { } void editor_toolbar_close_menu() { - editor_hide_contextmenu(); + if( !editor ) + return; + + GUI_EDITOR_TOOLBAR* tb = (GUI_EDITOR_TOOLBAR*)editor->gui.header_toolbar; + + if( tb ) + tb->active_root = -1; + + gui_contextmenu_hide( editor->gui.contextmenu ); } void editor_set_view_mode( I32 mode ) { @@ -89,11 +98,11 @@ void editor_contextmenu_set_tool_cb( void* data ) { editor_settool( (U8)(I64)data ); } -U8 editor_contextmenu_undo_enabled( EDITOR_CONTEXTMENU_ITEM* ) { +U8 editor_contextmenu_undo_enabled( GUI_CONTEXTMENU_ITEM* ) { return editor && editor->undo_actions.size > 0; } -U8 editor_contextmenu_redo_enabled( EDITOR_CONTEXTMENU_ITEM* ) { +U8 editor_contextmenu_redo_enabled( GUI_CONTEXTMENU_ITEM* ) { return editor && editor->redo_actions.size > 0; } @@ -104,31 +113,31 @@ void editor_toolbar_init_entries( GUI_EDITOR_TOOLBAR* bar ) { bar->entries.clear(); bar->entries.resize( 4 ); - editor_contextmenu_set_item( &bar->entries[0], "file" ); + gui_contextmenu_set_item( &bar->entries[0], "file" ); bar->entries[0].items.resize( 1 ); - editor_contextmenu_set_item( &bar->entries[0].items[0], "save", editor_contextmenu_save_cb ); + gui_contextmenu_set_item( &bar->entries[0].items[0], "save", editor_contextmenu_save_cb ); - editor_contextmenu_set_item( &bar->entries[1], "edit" ); + gui_contextmenu_set_item( &bar->entries[1], "edit" ); bar->entries[1].items.resize( 2 ); - editor_contextmenu_set_item( &bar->entries[1].items[0], "undo", editor_contextmenu_undo_cb, 0, editor_contextmenu_undo_enabled ); - editor_contextmenu_set_item( &bar->entries[1].items[1], "redo", editor_contextmenu_redo_cb, 0, editor_contextmenu_redo_enabled ); + gui_contextmenu_set_item( &bar->entries[1].items[0], "undo", editor_contextmenu_undo_cb, 0, editor_contextmenu_undo_enabled ); + gui_contextmenu_set_item( &bar->entries[1].items[1], "redo", editor_contextmenu_redo_cb, 0, editor_contextmenu_redo_enabled ); - editor_contextmenu_set_item( &bar->entries[2], "view" ); + gui_contextmenu_set_item( &bar->entries[2], "view" ); bar->entries[2].items.resize( 3 ); - editor_contextmenu_set_item( &bar->entries[2].items[0], "2d view", editor_contextmenu_set_view_mode_cb, (void*)(I64)EDITOR_VIEWMODE_2D ); - editor_contextmenu_set_item( &bar->entries[2].items[1], "3d view", editor_contextmenu_set_view_mode_cb, (void*)(I64)EDITOR_VIEWMODE_3D ); - editor_contextmenu_set_item( &bar->entries[2].items[2], "simulation", editor_contextmenu_set_view_mode_cb, (void*)(I64)EDITOR_VIEWMODE_SIM ); + gui_contextmenu_set_item( &bar->entries[2].items[0], "2d view", editor_contextmenu_set_view_mode_cb, (void*)(I64)EDITOR_VIEWMODE_2D ); + gui_contextmenu_set_item( &bar->entries[2].items[1], "3d view", editor_contextmenu_set_view_mode_cb, (void*)(I64)EDITOR_VIEWMODE_3D ); + gui_contextmenu_set_item( &bar->entries[2].items[2], "simulation", editor_contextmenu_set_view_mode_cb, (void*)(I64)EDITOR_VIEWMODE_SIM ); - editor_contextmenu_set_item( &bar->entries[3], "tools" ); + gui_contextmenu_set_item( &bar->entries[3], "tools" ); bar->entries[3].items.resize( 5 ); - editor_contextmenu_set_item( &bar->entries[3].items[0], "none", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_NONE ); - editor_contextmenu_set_item( &bar->entries[3].items[1], "select", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_SELECT ); - editor_contextmenu_set_item( &bar->entries[3].items[2], "wall", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_WALL ); - editor_contextmenu_set_item( &bar->entries[3].items[3], "poly", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_POLY ); - editor_contextmenu_set_item( &bar->entries[3].items[4], "object", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_OBJECT ); + gui_contextmenu_set_item( &bar->entries[3].items[0], "none", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_NONE ); + gui_contextmenu_set_item( &bar->entries[3].items[1], "select", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_SELECT ); + gui_contextmenu_set_item( &bar->entries[3].items[2], "wall", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_WALL ); + gui_contextmenu_set_item( &bar->entries[3].items[3], "poly", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_POLY ); + gui_contextmenu_set_item( &bar->entries[3].items[4], "object", editor_contextmenu_set_tool_cb, (void*)(I64)EDITOR_TOOL_OBJECT ); } -I32 editor_toolbar_root_width( const EDITOR_CONTEXTMENU_ITEM* entry ) { +I32 editor_toolbar_root_width( const GUI_CONTEXTMENU_ITEM* entry ) { if( !entry ) return 44; @@ -196,7 +205,7 @@ void gui_editor_toolbar_draw_fn( void* ptr ) { U8 hovered = hit.root == i; U8 active = bar->held && bar->held_root == i && m1; - U8 open = editor_contextmenu_open() && bar->active_root == i; + U8 open = gui_contextmenu_open( editor->gui.contextmenu ) && bar->active_root == i; CLR fill = ui_clr.bg_sec; if( active ) @@ -228,13 +237,14 @@ void gui_editor_toolbar_input_fn( void* ptr ) { } if( bar->held && bar->held_root == hit.root && hit.root >= 0 ) { - if( editor_contextmenu_open() && bar->active_root == hit.root ) { - editor_hide_contextmenu(); + if( gui_contextmenu_open( editor->gui.contextmenu ) && bar->active_root == hit.root ) { + editor_toolbar_close_menu(); } else { I32 rx = 0; editor_toolbar_root_rect( bar, hit.root, &rx, 0, 0, 0 ); - editor_show_contextmenu( rx, gui_rely( bar ) + bar->h, &bar->entries[hit.root].items ); - bar->active_root = hit.root; + LIST<GUI_CONTEXTMENU_ITEM>* items = &bar->entries[hit.root].items; + gui_show_contextmenu( rx, gui_rely( bar ) + bar->h, items, editor->wnd, 0, items->size, &editor->gui.contextmenu ); + bar->active_root = editor->gui.contextmenu ? hit.root : -1; } } |
