From 83bf30bd9d95d216d012b82c0d105b57029ad396 Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Tue, 8 Jul 2025 20:16:47 -0500 Subject: [PATCH] Add option TESSESFRAMEWORK_DEFINE_SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS --- CMakeLists.txt | 5 +++++ src/SDL2/GUIWindow.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7cff60..d166f39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,7 @@ src/SDL2/Views/HScrollView.cpp src/SDL2/Views/VStackView.cpp src/SDL2/Views/HStackView.cpp src/SDL2/Views/DropDownView.cpp +src/SDL2/Views/TabView.cpp ) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) @@ -81,6 +82,10 @@ option(TESSESFRAMEWORK_ENABLE_NETWORKING "Enable Networking" ON) option(TESSESFRAMEWORK_ENABLE_THREADING "Enable Threading" ON) option(TESSESFRAMEWORK_ENABLE_SQLITE "Enable sqlite (embedded in source)" ON) option(TESSESFRAMEWORK_ENABLE_PLATFORMFOLDERS "Enable sago platformfolders (embedded in source)" ON) +option(TESSESFRAMEWORK_DEFINE_SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS OFF) +if(TESSESFRAMEWORK_DEFINE_SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS) +add_definitions(-DTESSESFRAMEWORK_DEFINE_SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS=1) +endif() if(TESSESFRAMEWORK_ENABLE_SQLITE) list(APPEND TESSESFRAMEWORK_SOURCE src/Serialization/sqlite/sqlite3.c diff --git a/src/SDL2/GUIWindow.cpp b/src/SDL2/GUIWindow.cpp index 2caa291..6f358c2 100644 --- a/src/SDL2/GUIWindow.cpp +++ b/src/SDL2/GUIWindow.cpp @@ -15,6 +15,7 @@ #include "TessesFramework/SDL2/Views/HStackView.hpp" #include "TessesFramework/SDL2/Views/VStackView.hpp" #include "TessesFramework/SDL2/Views/DropDownView.hpp" +#include "TessesFramework/SDL2/Views/TabView.hpp" #include "TessesFramework/SDL2/ParseColor.hpp" #if defined(__SWITCH__) @@ -698,6 +699,49 @@ namespace Tesses::Framework::SDL2 } return sv; } + else if(type == "TabView") + { + //Item.TabLabel + auto tv = new Views::TabView(); + tv->SetId(id); + int64_t firstTab=0; + int64_t curTab=0; + bool tabsVisible=true; + + json.TryGetValueAsType("SelectedTab",curTab); + + json.TryGetValueAsType("FirstTab",firstTab); + json.TryGetValueAsType("TabsVisible", tabsVisible); + + tv->firstTab = (int64_t)firstTab; + tv->selectedTab = (int64_t)curTab; + tv->tabsVisible=tabsVisible; + + + Tesses::Framework::Serialization::Json::JArray arr; + + if(json.TryGetValueAsType("Items",arr)) + { + for(auto item : arr) + { + Tesses::Framework::Serialization::Json::JObject dict; + if(Tesses::Framework::Serialization::Json::TryGetJToken(item,dict)) + { + std::string n=""; + + dict.TryGetValueAsType("TabText",n); + + + auto myO = CreateViewFromJson(dict); + if(myO != nullptr) + { + tv->AddTab(n,myO,true); + } + } + } + } + return tv; + } else { GUIJsonViewNotFoundEventArgs e; e.destView = nullptr;