/**
* @brief Re-implemented from QWidget::hideEvent()
*
- * Calls updateKeyboardGrabbing().
+ * Calls updateKeyboardGrabbing() and clearFriendGroupFiltering().
*
* @param event
*/
private:
/**
- * @brief Set visibility for filtering related UI elements
+ * @brief Set visibility for filtering text field and clearing button
*
* @param visible True if items should be visible, false if not
*/
/**
* @brief Takes care of grabbing and releasing the keyboard when required
*
- * Keyboard is grabbed when MainWindow it the topmost window and FriendListPanel is visible.
- * Releasing is done if the MainWindow is not the topmost window and/or FriendListPanel
- * is invisible.
+ * Keyboard is grabbed when MainWindow it the topmost window, panel tab is open and
+ * FriendListPanel is visible. Releasing is done if the MainWindow is not the topmost window
+ * or panel tab is not open or FriendListPanel is invisible.
*/
void updateKeyboardGrabbing();
private slots:
/**
- * @brief Slot to clear friend list filter
- */
- void clearFriendListFilter();
+ * @brief Called when any of the panel tabs is closed
+ *
+ * Does call clearFriendGroupFiltering().
+ *
+ * Calls updateKeyboardGrabbing() for releasing the grabbing when FriendListPanel is closed, not
+ * changed to other panel. In this case the hideEvent() is not triggered.
+ */
+ void anyPanelClosed();
/**
- * @brief Slot for clearing the friend list filtering.
+ * @brief Called when any of the panel tabs is opened
+ *
+ * Calls updateKeyboardGrabbing() for grabbing the keyboard when FriendListPanel is closed and
+ * is the last selected tab. In this case the showEvent() is not triggered.
+ */
+ void anyPanelOpened();
+
+ /**
+ * @brief Slot for clearing the filtering
+ *
+ * Clears friend group (or single friend) filtering and calls clearTextFiltering().
*/
void clearFiltering();
/**
- * @brief Set filtering UI elements visibility based on the filtering text value
+ * @brief Slot for clearing the text based filtering.
+ *
+ * Does clear only the text based filtering. Friend group based filtering is not affected.
+ */
+ void clearTextFiltering();
+
+ /**
+ * @brief Updates the filtering when filtering text value is changed
*
* Filtering UI elements are invoked when the text becomes not empty and hidden when text
* becomes empty.
*
+ * Sets the new filtering text.
+ *
* @param text New text value
*/
void filterTextChanged(const QString &text);
******************************************************************************/
private:
bool m_mainWindowIsTopmost; ///< Is the MainWindow the topmost one
+ bool m_somePanelIsOpen; ///< Is any panel tab open
QLabel *m_friendListLabel; ///< Friend list label