This commit implements Phase 7 of the UIModule, adding advanced features that make the UI system production-ready. ## Phase 7.1 - UIScrollPanel New scrollable container widget with: - Vertical and horizontal scrolling (configurable) - Mouse wheel support with smooth scrolling - Drag-to-scroll functionality (drag content or scrollbar) - Interactive scrollbar with proportional thumb - Automatic content size calculation - Visibility culling for performance - Full styling support (colors, borders, scrollbar) Files added: - modules/UIModule/Widgets/UIScrollPanel.h - modules/UIModule/Widgets/UIScrollPanel.cpp - modules/UIModule/Core/UIContext.h (added mouseWheelDelta) - modules/UIModule/UIModule.cpp (mouse wheel event routing) ## Phase 7.2 - Tooltips Smart tooltip system with: - Hover delay (500ms default) - Automatic positioning with edge avoidance - Semi-transparent background with border - Per-widget tooltip text via JSON - Tooltip property on all UIWidget types - Renders on top of all UI elements Files added: - modules/UIModule/Core/UITooltip.h - modules/UIModule/Core/UITooltip.cpp - modules/UIModule/Core/UIWidget.h (added tooltip property) - modules/UIModule/Core/UITree.cpp (tooltip parsing) ## Tests Added comprehensive visual tests: - test_28_ui_scroll.cpp - ScrollPanel with 35+ items - test_29_ui_advanced.cpp - Tooltips on various widgets - assets/ui/test_scroll.json - ScrollPanel layout - assets/ui/test_tooltips.json - Tooltips layout ## Documentation - docs/UI_MODULE_PHASE7_COMPLETE.md - Complete Phase 7 docs - docs/PROMPT_UI_MODULE_PHASE6.md - Phase 6 & 7 prompt - Updated CMakeLists.txt for new files and tests ## UIModule Status UIModule is now feature-complete with: ✅ 9 widget types (Panel, Label, Button, Image, Slider, Checkbox, ProgressBar, TextInput, ScrollPanel) ✅ Flexible layout system (vertical, horizontal, stack, absolute) ✅ Theme and style system ✅ Complete event system ✅ Tooltips with smart positioning ✅ Hot-reload support ✅ Comprehensive tests (Phases 1-7) 🚀 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
73 lines
1.8 KiB
CMake
73 lines
1.8 KiB
CMake
# ============================================================================
|
|
# UIModule - CMake Configuration
|
|
# ============================================================================
|
|
|
|
cmake_minimum_required(VERSION 3.20)
|
|
|
|
# ============================================================================
|
|
# UIModule Shared Library
|
|
# ============================================================================
|
|
|
|
add_library(UIModule SHARED
|
|
# Main module
|
|
UIModule.cpp
|
|
|
|
# Core
|
|
Core/UITree.cpp
|
|
Core/UILayout.cpp
|
|
Core/UIContext.cpp
|
|
Core/UIStyle.cpp
|
|
Core/UITooltip.cpp
|
|
|
|
# Widgets
|
|
Widgets/UIPanel.cpp
|
|
Widgets/UILabel.cpp
|
|
Widgets/UIButton.cpp
|
|
Widgets/UIImage.cpp
|
|
Widgets/UISlider.cpp
|
|
Widgets/UICheckbox.cpp
|
|
Widgets/UIProgressBar.cpp
|
|
Widgets/UITextInput.cpp
|
|
Widgets/UIScrollPanel.cpp
|
|
|
|
# Rendering
|
|
Rendering/UIRenderer.cpp
|
|
)
|
|
|
|
target_include_directories(UIModule PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
)
|
|
|
|
target_link_libraries(UIModule PRIVATE
|
|
GroveEngine::impl
|
|
spdlog::spdlog
|
|
nlohmann_json::nlohmann_json
|
|
)
|
|
|
|
target_compile_features(UIModule PRIVATE cxx_std_17)
|
|
|
|
set_target_properties(UIModule PROPERTIES
|
|
PREFIX "lib"
|
|
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/modules
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/modules
|
|
)
|
|
|
|
# ============================================================================
|
|
# Platform-specific settings
|
|
# ============================================================================
|
|
|
|
if(WIN32)
|
|
target_compile_definitions(UIModule PRIVATE
|
|
WIN32_LEAN_AND_MEAN
|
|
NOMINMAX
|
|
)
|
|
endif()
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
target_link_libraries(UIModule PRIVATE
|
|
pthread
|
|
dl
|
|
)
|
|
endif()
|