File indexing completed on 2024-04-28 05:49:33

0001 /*
0002     SPDX-FileCopyrightText: 2014 Christoph Cullmann <cullmann@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QPointer>
0010 #include <QWidget>
0011 
0012 class KateUpdateDisabler
0013 {
0014 public:
0015     /**
0016      * Disable updates for given widget.
0017      * Will auto-enable them on destruction, like a mutex locker releases its lock.
0018      * @param widget widget to disable updates for
0019      */
0020     explicit KateUpdateDisabler(QWidget *widget)
0021         : m_widget((widget && widget->updatesEnabled()) ? widget : nullptr)
0022     {
0023         if (m_widget) {
0024             m_widget->setUpdatesEnabled(false);
0025         }
0026     }
0027 
0028     /**
0029      * Enable updates again on destruction.
0030      */
0031     ~KateUpdateDisabler()
0032     {
0033         if (m_widget) {
0034             m_widget->setUpdatesEnabled(true);
0035         }
0036     }
0037 
0038 private:
0039     /**
0040      * No copying please
0041      */
0042     Q_DISABLE_COPY(KateUpdateDisabler)
0043 
0044     /**
0045      * pointer to widget, if not null, enable/disable widgets
0046      */
0047     QPointer<QWidget> m_widget;
0048 };