1111#include " CommonFramework/GlobalSettingsPanel.h"
1212#include " CommonFramework/Windows/DpiScaler.h"
1313#include " CommonFramework/Windows/WindowTracker.h"
14+ #include " CommonFramework/Windows/MainWindow.h"
1415#include " CommonFramework/Options/ResolutionOption.h"
1516#include " FileWindowLogger.h"
1617
@@ -240,6 +241,11 @@ FileWindowLoggerWindow::FileWindowLoggerWindow(FileWindowLogger& logger, QWidget
240241 }
241242 );
242243
244+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->WIDTH .add_listener (*this );
245+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->HEIGHT .add_listener (*this );
246+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->X_POS .add_listener (*this );
247+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->Y_POS .add_listener (*this );
248+
243249 m_logger += *this ;
244250 log (" ================================================================================" );
245251 log (" <b>Window Startup...</b>" );
@@ -252,6 +258,10 @@ FileWindowLoggerWindow::FileWindowLoggerWindow(FileWindowLogger& logger, QWidget
252258FileWindowLoggerWindow::~FileWindowLoggerWindow (){
253259 remove_window (*this );
254260 m_logger -= *this ;
261+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->WIDTH .remove_listener (*this );
262+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->HEIGHT .remove_listener (*this );
263+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->X_POS .remove_listener (*this );
264+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->Y_POS .remove_listener (*this );
255265}
256266
257267void FileWindowLoggerWindow::log (QString msg){
@@ -260,15 +270,39 @@ void FileWindowLoggerWindow::log(QString msg){
260270}
261271
262272void FileWindowLoggerWindow::resizeEvent (QResizeEvent* event){
263- // m_pending_resize = true;
273+ m_pending_resize = true ;
264274 GlobalSettings::instance ().LOG_WINDOW_SIZE ->WIDTH .set (width ());
265275 GlobalSettings::instance ().LOG_WINDOW_SIZE ->HEIGHT .set (height ());
266- // m_pending_resize = false;
276+ m_pending_resize = false ;
267277}
268278
269279void FileWindowLoggerWindow::moveEvent (QMoveEvent* event){
280+ m_pending_move = true ;
270281 GlobalSettings::instance ().LOG_WINDOW_SIZE ->X_POS .set (x ());
271282 GlobalSettings::instance ().LOG_WINDOW_SIZE ->Y_POS .set (y ());
283+ m_pending_move = false ;
284+ }
285+
286+ void FileWindowLoggerWindow::on_config_value_changed (void * object){
287+ if (object == &GlobalSettings::instance ().LOG_WINDOW_SIZE ->WIDTH || object == &GlobalSettings::instance ().LOG_WINDOW_SIZE ->HEIGHT ){
288+ QMetaObject::invokeMethod (this , [this ]{
289+ if (!m_pending_resize){
290+ resize (
291+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->WIDTH ,
292+ GlobalSettings::instance ().LOG_WINDOW_SIZE ->HEIGHT
293+ );
294+ }
295+ });
296+ }else if (object == &GlobalSettings::instance ().LOG_WINDOW_SIZE ->X_POS || object == &GlobalSettings::instance ().LOG_WINDOW_SIZE ->Y_POS ){
297+ QMetaObject::invokeMethod (this , [this ]{
298+ if (!m_pending_move){
299+ move (
300+ move_x_within_screen_bounds (GlobalSettings::instance ().LOG_WINDOW_SIZE ->X_POS ),
301+ move_y_within_screen_bounds (GlobalSettings::instance ().LOG_WINDOW_SIZE ->Y_POS )
302+ );
303+ }
304+ });
305+ }
272306}
273307
274308
0 commit comments