@@ -162,7 +162,7 @@ target_link_libraries(waylight PRIVATE
|
|||||||
PkgConfig::XKBCOMMON
|
PkgConfig::XKBCOMMON
|
||||||
PkgConfig::FONTCONFIG
|
PkgConfig::FONTCONFIG
|
||||||
PkgConfig::HARFBUZZ
|
PkgConfig::HARFBUZZ
|
||||||
|
|
||||||
raylib
|
raylib
|
||||||
msdfgen::msdfgen-core
|
msdfgen::msdfgen-core
|
||||||
msdfgen::msdfgen-ext
|
msdfgen::msdfgen-ext
|
||||||
|
|||||||
11
src/App.cpp
11
src/App.cpp
@@ -146,6 +146,10 @@ App::~App()
|
|||||||
if (m_sfd != -1)
|
if (m_sfd != -1)
|
||||||
close(m_sfd);
|
close(m_sfd);
|
||||||
|
|
||||||
|
for (auto &[_, tex] : m_textures) {
|
||||||
|
UnloadTexture(tex);
|
||||||
|
}
|
||||||
|
|
||||||
destroy_layer_surface();
|
destroy_layer_surface();
|
||||||
|
|
||||||
if (m_gl.edpy != EGL_NO_DISPLAY) {
|
if (m_gl.edpy != EGL_NO_DISPLAY) {
|
||||||
@@ -597,7 +601,12 @@ auto App::init_wayland() -> void
|
|||||||
if (!ctx->data.empty())
|
if (!ctx->data.empty())
|
||||||
ctx->app->m_clipboard_cache
|
ctx->app->m_clipboard_cache
|
||||||
= std::move(ctx->data);
|
= std::move(ctx->data);
|
||||||
wl_data_offer_destroy(ctx->offer);
|
if (ctx->offer
|
||||||
|
== ctx->app->m_wayland.curr_offer) {
|
||||||
|
wl_data_offer_destroy(ctx->offer);
|
||||||
|
ctx->app->m_wayland.curr_offer
|
||||||
|
= nullptr;
|
||||||
|
}
|
||||||
delete ctx;
|
delete ctx;
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
},
|
},
|
||||||
|
|||||||
19
src/App.hpp
19
src/App.hpp
@@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
|
#include <filesystem>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -196,6 +198,23 @@ private:
|
|||||||
bool surrounding_dirty { false };
|
bool surrounding_dirty { false };
|
||||||
} m_ime;
|
} m_ime;
|
||||||
|
|
||||||
|
// NOTE: Canonicalize first!
|
||||||
|
std::unordered_map<std::filesystem::path, Texture2D> m_textures;
|
||||||
|
|
||||||
|
auto get_texture(std::filesystem::path const &path) -> Texture2D const &
|
||||||
|
{
|
||||||
|
if (m_textures.contains(path)) {
|
||||||
|
return m_textures[path];
|
||||||
|
}
|
||||||
|
auto fname = path.c_str();
|
||||||
|
assert(fname);
|
||||||
|
TraceLog(LOG_INFO, std::format("loading texture at {}", fname).c_str());
|
||||||
|
auto const tex = LoadTexture(fname);
|
||||||
|
assert(IsTextureValid(tex));
|
||||||
|
m_textures[path] = tex;
|
||||||
|
return m_textures[path];
|
||||||
|
}
|
||||||
|
|
||||||
enum_array<Theme, ColorScheme> m_themes { make_default_themes() };
|
enum_array<Theme, ColorScheme> m_themes { make_default_themes() };
|
||||||
Theme m_active_theme { Theme::Light };
|
Theme m_active_theme { Theme::Light };
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
#include <rlgl.h>
|
#include <rlgl.h>
|
||||||
#include <xkbcommon/xkbcommon.h>
|
#include <xkbcommon/xkbcommon.h>
|
||||||
|
|
||||||
|
#include <filesystem>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
auto App::tick() -> void
|
auto App::tick() -> void
|
||||||
{
|
{
|
||||||
static std::pmr::string text_input_data {};
|
static std::pmr::string text_input_data {};
|
||||||
@@ -62,6 +65,8 @@ auto App::tick() -> void
|
|||||||
update_text_input_state(text_input_data, 1, input_rect);
|
update_text_input_state(text_input_data, 1, input_rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DrawTexture(get_texture(*icon_lookup("folder", 32)), 50, 50, WHITE);
|
||||||
|
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
|
|
||||||
eglSwapBuffers(m_gl.edpy, m_gl.esurf);
|
eglSwapBuffers(m_gl.edpy, m_gl.esurf);
|
||||||
|
|||||||
Reference in New Issue
Block a user