mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Nav: Fixed using Alt to toggle the Menu layer when inside a Modal window. (#787) Tidying up todo items.
This commit is contained in:
		| @@ -39,6 +39,7 @@ Other Changes: | |||||||
|  |  | ||||||
| - Window: Fixed using non-zero pivot in SetNextWindowPos() when the window is collapsed. (#3433) | - Window: Fixed using non-zero pivot in SetNextWindowPos() when the window is collapsed. (#3433) | ||||||
| - Nav: Fixed navigation resuming on first visible item when using gamepad. [@rokups] | - Nav: Fixed navigation resuming on first visible item when using gamepad. [@rokups] | ||||||
|  | - Nav: Fixed using Alt to toggle the Menu layer when inside a Modal window. (#787) | ||||||
| - InputText: Added selection helpers in ImGuiInputTextCallbackData(). | - InputText: Added selection helpers in ImGuiInputTextCallbackData(). | ||||||
| - InputText: Added ImGuiInputTextFlags_CallbackEdit to modify internally owned buffer after an edit. | - InputText: Added ImGuiInputTextFlags_CallbackEdit to modify internally owned buffer after an edit. | ||||||
|   (note that InputText() already returns true on edit, the callback is useful mainly to manipulate the |   (note that InputText() already returns true on edit, the callback is useful mainly to manipulate the | ||||||
|   | |||||||
| @@ -333,20 +333,24 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i | |||||||
|  - font/opt: Glyph currently 40 bytes (2+9*4). Consider storing UV as 16 bits integer? (->32 bytes). X0/Y0/X1/Y1 as 16 fixed-point integers? Or X0/Y0 as float and X1/Y1 as fixed8_8? |  - font/opt: Glyph currently 40 bytes (2+9*4). Consider storing UV as 16 bits integer? (->32 bytes). X0/Y0/X1/Y1 as 16 fixed-point integers? Or X0/Y0 as float and X1/Y1 as fixed8_8? | ||||||
|  |  | ||||||
|  - nav: some features such as PageUp/Down/Home/End should probably work without ImGuiConfigFlags_NavEnableKeyboard? (where do we draw the line?) |  - nav: some features such as PageUp/Down/Home/End should probably work without ImGuiConfigFlags_NavEnableKeyboard? (where do we draw the line?) | ||||||
|  ! nav: never clear NavId on some setup (e.g. gamepad centric) |  | ||||||
|  - nav: code to focus child-window on restoring NavId appears to have issue: e.g. when focus change is implicit because of window closure. |  | ||||||
|  - nav: configuration flag to disable global shortcuts (currently only CTRL-Tab) ? |  - nav: configuration flag to disable global shortcuts (currently only CTRL-Tab) ? | ||||||
|  |  ! nav: never clear NavId on some setup (e.g. gamepad centric) | ||||||
|  |  - nav: there's currently no way to completely clear focus with the keyboard. depending on patterns used by the application to dispatch inputs, it may be desirable. | ||||||
|  |  - nav: code to focus child-window on restoring NavId appears to have issue: e.g. when focus change is implicit because of window closure. | ||||||
|  - nav: Home/End behavior when navigable item is not fully visible at the edge of scrolling? should be backtrack to keep item into view? |  - nav: Home/End behavior when navigable item is not fully visible at the edge of scrolling? should be backtrack to keep item into view? | ||||||
|  - nav: NavScrollToBringItemIntoView() with item bigger than view should focus top-right? Repro: using Nav in "About Window" |  - nav: NavScrollToBringItemIntoView() with item bigger than view should focus top-right? Repro: using Nav in "About Window" | ||||||
|  - nav: wrap around logic to allow e.g. grid based layout (pressing NavRight on the right-most element would go to the next row, etc.). see internal's NavMoveRequestTryWrapping(). |  - nav: wrap around logic to allow e.g. grid based layout (pressing NavRight on the right-most element would go to the next row, etc.). see internal's NavMoveRequestTryWrapping(). | ||||||
|  - nav: patterns to make it possible for arrows key to update selection |  - nav: patterns to make it possible for arrows key to update selection (see JustMovedTo in range_select branch) | ||||||
|  - nav: restore/find nearest NavId when current one disappear (e.g. pressed a button that disappear, or perhaps auto restoring when current button change name) |  - nav: restore/find nearest NavId when current one disappear (e.g. pressed a button that disappear, or perhaps auto restoring when current button change name) | ||||||
|  - nav: SetItemDefaultFocus() level of priority, so widget like Selectable when inside a popup could claim a low-priority default focus on the first selected iem |  - nav: SetItemDefaultFocus() level of priority, so widget like Selectable when inside a popup could claim a low-priority default focus on the first selected iem | ||||||
|  - nav: NavFlattened: ESC on a flattened child should select something. |  - nav: NavFlattened: ESC on a flattened child should select something. | ||||||
|  - nav: NavFlattened: broken: in typical usage scenario, the items of a fully clipped child are currently not considered to enter into a NavFlattened child. |  - nav: NavFlattened: broken: in typical usage scenario, the items of a fully clipped child are currently not considered to enter into a NavFlattened child. | ||||||
|  - nav: NavFlattened: init request doesn't select items that are part of a NavFlattened child |  - nav: NavFlattened: init request doesn't select items that are part of a NavFlattened child | ||||||
|  - nav: NavFlattened: cannot access menu-bar of a flattened child window with Alt/menu key (not a very common use case..). |  - nav: NavFlattened: cannot access menu-bar of a flattened child window with Alt/menu key (not a very common use case..). | ||||||
|  - nav/treenode: Left within a tree node block as a fallback (ImGuiTreeNodeFlags_NavLeftJumpsBackHere by default?) |  - nav: simulate right-click or context activation? (SHIFT+F10) | ||||||
|  |  - nav/tabbing: refactor old tabbing system and turn into navigation, should pass through all widgets (in submission order?). | ||||||
|  |  - nav/popup: esc/enter default behavior for popups, e.g. be able to mark an "ok" or "cancel" button that would get triggered by those keys, default validation button, etc. | ||||||
|  |  - nav/treenode: left within a tree node block as a fallback (ImGuiTreeNodeFlags_NavLeftJumpsBackHere by default?) | ||||||
|  - nav/menus: pressing left-right on a vertically clipped menu bar tends to jump to the collapse/close buttons. |  - nav/menus: pressing left-right on a vertically clipped menu bar tends to jump to the collapse/close buttons. | ||||||
|  - nav/menus: allow pressing Menu to leave a sub-menu. |  - nav/menus: allow pressing Menu to leave a sub-menu. | ||||||
|  - nav/menus: a way to access the main menu bar with Alt? (currently needs CTRL+TAB) or last focused window menu bar? |  - nav/menus: a way to access the main menu bar with Alt? (currently needs CTRL+TAB) or last focused window menu bar? | ||||||
| @@ -355,11 +359,7 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i | |||||||
|  - nav/menus: Alt,Up could open the first menu (e.g. "File") currently it tends to nav into the window/collapse menu. Do do that we would need custom transition? |  - nav/menus: Alt,Up could open the first menu (e.g. "File") currently it tends to nav into the window/collapse menu. Do do that we would need custom transition? | ||||||
|  - nav/windowing: configure fade-in/fade-out delay on Ctrl+Tab? |  - nav/windowing: configure fade-in/fade-out delay on Ctrl+Tab? | ||||||
|  - nav/windowing: when CTRL-Tab/windowing is active, the HoveredWindow detection doesn't take account of the window display re-ordering. |  - nav/windowing: when CTRL-Tab/windowing is active, the HoveredWindow detection doesn't take account of the window display re-ordering. | ||||||
|  - nav: simulate right-click or context activation? (SHIFT+F10) |  - nav/windowing: Resizing window will currently fail with certain types of resizing constraints/callback applied | ||||||
|  - nav: tabs should go through most/all widgets (in submission order?). |  | ||||||
|  - nav: esc/enter default behavior for popups, e.g. be able to mark an "ok" or "cancel" button that would get triggered by those keys. |  | ||||||
|  - nav: when activating a button that changes label (without a static ID) or disappear, can we somehow automatically recover into a nearest highlight item? |  | ||||||
|  - nav: there's currently no way to completely clear focus with the keyboard. depending on patterns used by the application to dispatch inputs, it may be desirable. |  | ||||||
|  - focus: preserve ActiveId/focus stack state, e.g. when opening a menu and close it, previously selected InputText() focus gets restored (#622) |  - focus: preserve ActiveId/focus stack state, e.g. when opening a menu and close it, previously selected InputText() focus gets restored (#622) | ||||||
|  - focus: SetKeyboardFocusHere() on with >= 0 offset could be done on same frame (else latch and modulate on beginning of next frame) |  - focus: SetKeyboardFocusHere() on with >= 0 offset could be done on same frame (else latch and modulate on beginning of next frame) | ||||||
|  - focus: unable to use SetKeyboardFocusHere() on clipped widgets. (#787) |  - focus: unable to use SetKeyboardFocusHere() on clipped widgets. (#787) | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -9039,11 +9039,9 @@ static void ImGui::NavUpdateWindowing() | |||||||
|     bool apply_toggle_layer = false; |     bool apply_toggle_layer = false; | ||||||
|  |  | ||||||
|     ImGuiWindow* modal_window = GetTopMostPopupModal(); |     ImGuiWindow* modal_window = GetTopMostPopupModal(); | ||||||
|     if (modal_window != NULL) |     bool allow_windowing = (modal_window == NULL); | ||||||
|     { |     if (!allow_windowing) | ||||||
|         g.NavWindowingTarget = NULL; |         g.NavWindowingTarget = NULL; | ||||||
|         return; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // Fade out |     // Fade out | ||||||
|     if (g.NavWindowingTargetAnim && g.NavWindowingTarget == NULL) |     if (g.NavWindowingTargetAnim && g.NavWindowingTarget == NULL) | ||||||
| @@ -9054,8 +9052,8 @@ static void ImGui::NavUpdateWindowing() | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     // Start CTRL-TAB or Square+L/R window selection |     // Start CTRL-TAB or Square+L/R window selection | ||||||
|     bool start_windowing_with_gamepad = !g.NavWindowingTarget && IsNavInputTest(ImGuiNavInput_Menu, ImGuiInputReadMode_Pressed); |     bool start_windowing_with_gamepad = allow_windowing && !g.NavWindowingTarget && IsNavInputTest(ImGuiNavInput_Menu, ImGuiInputReadMode_Pressed); | ||||||
|     bool start_windowing_with_keyboard = !g.NavWindowingTarget && g.IO.KeyCtrl && IsKeyPressedMap(ImGuiKey_Tab) && (g.IO.ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard); |     bool start_windowing_with_keyboard = allow_windowing && !g.NavWindowingTarget && g.IO.KeyCtrl && IsKeyPressedMap(ImGuiKey_Tab) && (g.IO.ConfigFlags & ImGuiConfigFlags_NavEnableKeyboard); | ||||||
|     if (start_windowing_with_gamepad || start_windowing_with_keyboard) |     if (start_windowing_with_gamepad || start_windowing_with_keyboard) | ||||||
|         if (ImGuiWindow* window = g.NavWindow ? g.NavWindow : FindWindowNavFocusable(g.WindowsFocusOrder.Size - 1, -INT_MAX, -1)) |         if (ImGuiWindow* window = g.NavWindow ? g.NavWindow : FindWindowNavFocusable(g.WindowsFocusOrder.Size - 1, -INT_MAX, -1)) | ||||||
|         { |         { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 ocornut
					ocornut