File indexing completed on 2024-04-14 04:53:05
0001 /* This file is part of the KDE project 0002 SPDX-FileCopyrightText: 2003 Simon Hausmann <hausmann@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "delayedinitializer.h" 0008 #include <QTimer> 0009 #include "konqdebug.h" 0010 #include <QEvent> 0011 0012 DelayedInitializer::DelayedInitializer(int eventType, QObject *parent) 0013 : QObject(parent), m_eventType(eventType), m_signalEmitted(false) 0014 { 0015 parent->installEventFilter(this); 0016 } 0017 0018 bool DelayedInitializer::eventFilter(QObject *receiver, QEvent *event) 0019 { 0020 if (m_signalEmitted || event->type() != m_eventType) { 0021 return false; 0022 } 0023 0024 m_signalEmitted = true; 0025 receiver->removeEventFilter(this); 0026 0027 // Move the emitting of the event to the end of the eventQueue 0028 // so we are absolutely sure the event we get here is handled before 0029 // the initialize is fired. 0030 QTimer::singleShot(0, this, SLOT(slotInitialize())); 0031 0032 return false; 0033 } 0034 0035 void DelayedInitializer::slotInitialize() 0036 { 0037 emit initialize(); 0038 deleteLater(); 0039 } 0040