QGIS API Documentation  3.25.0-Master (10b47c2603)
qgsfocuskeeper.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsfocuskeeper.cpp
3  -----------------
4  Date : May 2020
5  Copyright : (C) 2020 Even Rouault
6  Email : even dot rouault at spatialys dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #include "qgsfocuskeeper.h"
17 
18 #include <QApplication>
19 #include <QEvent>
20 #include <QWidget>
21 
22 QgsFocusKeeper::QgsFocusKeeper(): mWidgetToKeepFocused( QApplication::focusWidget() )
23 {
24  if ( mWidgetToKeepFocused )
25  mWidgetToKeepFocused->installEventFilter( this );
26 }
27 
29 {
30  if ( mWidgetToKeepFocused )
31  mWidgetToKeepFocused->removeEventFilter( this );
32 }
33 
34 bool QgsFocusKeeper::eventFilter( QObject *obj, QEvent *event )
35 {
36  if ( obj == mWidgetToKeepFocused && event &&
37  ( event->type() == QEvent::FocusOut || event->type() == QEvent::FocusAboutToChange ) )
38  {
39  return true;
40  }
41  return QObject::eventFilter( obj, event );
42 }
~QgsFocusKeeper() override
bool eventFilter(QObject *obj, QEvent *event) override