@@ -138,6 +138,27 @@ struct SFirstExecRequest {
138138 bool withRules = false ;
139139};
140140
141+ struct SFloatCache {
142+ size_t hash;
143+
144+ SFloatCache (PHLWINDOW window) {
145+ hash = std::hash<std::string>{}(window->m_szClass ) ^ (std::hash<std::string>{}(window->m_szTitle ) << 1 );
146+ }
147+
148+ bool operator ==(const SFloatCache& other) const {
149+ return hash == other.hash ;
150+ }
151+ };
152+
153+ namespace std {
154+ template <>
155+ struct hash <SFloatCache> {
156+ size_t operator ()(const SFloatCache& id) const {
157+ return id.hash ;
158+ }
159+ };
160+ }
161+
141162class CConfigManager {
142163 public:
143164 CConfigManager ();
@@ -232,6 +253,9 @@ class CConfigManager {
232253 bool isLaunchingExecOnce = false ; // For exec-once to skip initial ws tracking
233254 bool m_bLastConfigVerificationWasSuccessful = true ;
234255
256+ void storeFloatingSize (PHLWINDOW window, const Vector2D& size);
257+ std::optional<Vector2D> getStoredFloatingSize (PHLWINDOW window);
258+
235259 private:
236260 UP<Hyprlang::CConfig> m_pConfig;
237261
@@ -267,19 +291,21 @@ class CConfigManager {
267291 uint32_t m_configValueNumber = 0 ;
268292
269293 // internal methods
270- void updateBlurredLS (const std::string&, const bool );
271- void setDefaultAnimationVars ();
272- std::optional<std::string> resetHLConfig ();
273- std::optional<std::string> generateConfig (std::string configPath);
274- std::optional<std::string> verifyConfigExists ();
275- void postConfigReload (const Hyprlang::CParseResult& result);
276- SWorkspaceRule mergeWorkspaceRules (const SWorkspaceRule&, const SWorkspaceRule&);
277-
278- void registerConfigVar (const char * name, const Hyprlang::INT& val);
279- void registerConfigVar (const char * name, const Hyprlang::FLOAT& val);
280- void registerConfigVar (const char * name, const Hyprlang::VEC2& val);
281- void registerConfigVar (const char * name, const Hyprlang::STRING& val);
282- void registerConfigVar (const char * name, Hyprlang::CUSTOMTYPE&& val);
294+ void updateBlurredLS (const std::string&, const bool );
295+ void setDefaultAnimationVars ();
296+ std::optional<std::string> resetHLConfig ();
297+ std::optional<std::string> generateConfig (std::string configPath);
298+ std::optional<std::string> verifyConfigExists ();
299+ void postConfigReload (const Hyprlang::CParseResult& result);
300+ SWorkspaceRule mergeWorkspaceRules (const SWorkspaceRule&, const SWorkspaceRule&);
301+
302+ void registerConfigVar (const char * name, const Hyprlang::INT& val);
303+ void registerConfigVar (const char * name, const Hyprlang::FLOAT& val);
304+ void registerConfigVar (const char * name, const Hyprlang::VEC2& val);
305+ void registerConfigVar (const char * name, const Hyprlang::STRING& val);
306+ void registerConfigVar (const char * name, Hyprlang::CUSTOMTYPE&& val);
307+
308+ std::unordered_map<SFloatCache, Vector2D> m_mStoredFloatingSizes;
283309
284310 friend struct SConfigOptionDescription ;
285311};
0 commit comments