mirror of
				https://github.com/ArthurSonzogni/FTXUI.git
				synced 2025-10-31 10:38:09 +08:00 
			
		
		
		
	Make the focused button to take the focus inside frame. (#371)
This resolves: https://github.com/ArthurSonzogni/FTXUI/issues/370
This commit is contained in:
		| @@ -2,6 +2,7 @@ set(DIRECTORY_LIB component) | ||||
|  | ||||
| example(button) | ||||
| example(button_animated) | ||||
| example(button_in_frame) | ||||
| example(button_style) | ||||
| example(canvas_animated) | ||||
| example(checkbox) | ||||
|   | ||||
							
								
								
									
										48
									
								
								examples/component/button_in_frame.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								examples/component/button_in_frame.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| #include <array>   // for array | ||||
| #include <memory>  // for shared_ptr, __shared_ptr_access | ||||
| #include <string>  // for operator+, to_string | ||||
|  | ||||
| #include "ftxui/component/captured_mouse.hpp"  // for ftxui | ||||
| #include "ftxui/component/component.hpp"  // for Checkbox, Renderer, Vertical | ||||
| #include "ftxui/component/component_base.hpp"      // for ComponentBase | ||||
| #include "ftxui/component/screen_interactive.hpp"  // for ScreenInteractive | ||||
| #include "ftxui/dom/elements.hpp"  // for operator|, Element, size, border, frame, vscroll_indicator, HEIGHT, LESS_THAN | ||||
|  | ||||
| using namespace ftxui; | ||||
|  | ||||
| int main(int argc, const char* argv[]) { | ||||
|   int counter = 0; | ||||
|   auto on_click = [&] { counter++; }; | ||||
|  | ||||
|   auto button_style = ButtonOption::Animated(Color::Default, Color::GrayDark, | ||||
|                                              Color::Default, Color::White); | ||||
|  | ||||
|   auto container = Container::Vertical({}); | ||||
|   for (int i = 0; i < 30; ++i) { | ||||
|     auto button = | ||||
|         Button("Button " + std::to_string(i), on_click, &button_style); | ||||
|     container->Add(button); | ||||
|   } | ||||
|  | ||||
|   auto renderer = Renderer(container, [&] { | ||||
|     return vbox({ | ||||
|                hbox({ | ||||
|                    text("Counter:"), | ||||
|                    text(std::to_string(counter)), | ||||
|                }), | ||||
|                separator(), | ||||
|                container->Render() | vscroll_indicator | frame | | ||||
|                    size(HEIGHT, LESS_THAN, 20), | ||||
|            }) | | ||||
|            border; | ||||
|   }); | ||||
|  | ||||
|   auto screen = ScreenInteractive::FitComponent(); | ||||
|   screen.Loop(renderer); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
| // Copyright 2022 Arthur Sonzogni. All rights reserved. | ||||
| // Use of this source code is governed by the MIT license that can be found in | ||||
| // the LICENSE file. | ||||
		Reference in New Issue
	
	Block a user
	 Arthur Sonzogni
					Arthur Sonzogni