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