FriendListPanel::FriendListPanel(QWidget *parent)
: QWidget(parent),
- m_mainWindowIsTopmost(false)
+ m_mainWindowIsTopmost(false),
+ m_somePanelIsOpen(false)
{
qDebug() << __PRETTY_FUNCTION__;
this, SLOT(topmostWindowChanged(bool)));
}
+void FriendListPanel::anyPanelClosed()
+{
+ qWarning() << __PRETTY_FUNCTION__;
+
+ m_somePanelIsOpen = false;
+ updateKeyboardGrabbing();
+}
+
+void FriendListPanel::anyPanelOpened()
+{
+ qWarning() << __PRETTY_FUNCTION__;
+
+ m_somePanelIsOpen = true;
+ updateKeyboardGrabbing();
+}
+
void FriendListPanel::clearFiltering()
{
qDebug() << __PRETTY_FUNCTION__;
{
qDebug() << __PRETTY_FUNCTION__;
- if (!m_mainWindowIsTopmost || !isVisible()) {
+ if (!m_mainWindowIsTopmost || !m_somePanelIsOpen || !isVisible()) {
if (QWidget::keyboardGrabber() == m_filterField) {
m_filterField->releaseKeyboard();
qWarning() << __PRETTY_FUNCTION__ << "released";
}
- } else if (m_mainWindowIsTopmost && isVisible()) {
+ } else if (m_mainWindowIsTopmost && m_somePanelIsOpen && isVisible()) {
if (QWidget::keyboardGrabber() != m_filterField) {
m_filterField->grabKeyboard();
qWarning() << __PRETTY_FUNCTION__ << "grabbed";
void updateKeyboardGrabbing();
private slots:
+ void anyPanelClosed();
+
+ void anyPanelOpened();
+
/**
* @brief Slot to clear friend list filter
*/
******************************************************************************/
private:
bool m_mainWindowIsTopmost; ///< Is the MainWindow the topmost one
+ bool m_somePanelIsOpen;
QLabel *m_friendListLabel; ///< Friend list label
connect(m_friendsListPanel, SIGNAL(showPanelRequested(QWidget*)),
m_tabbedPanel, SLOT(showPanel(QWidget*)));
+
+ connect(m_tabbedPanel, SIGNAL(panelClosed()),
+ m_friendsListPanel, SLOT(anyPanelClosed()));
+
+ connect(m_tabbedPanel, SIGNAL(panelOpened()),
+ m_friendsListPanel, SLOT(anyPanelOpened()));
}
void MainWindow::buildRoutingPanel()