Browse Source

show description window without taking focus

Scott Brogden 9 years ago
parent
commit
75b3978c80
4 changed files with 23 additions and 2 deletions
  1. 11 0
      QListCtrl.cpp
  2. 2 1
      QListCtrl.h
  3. 8 0
      QPasteWnd.cpp
  4. 2 1
      ToolTipEx.cpp

+ 11 - 0
QListCtrl.cpp

@@ -1471,4 +1471,15 @@ void CQListCtrl::HidePopup()
 { 
 	if(VALID_TOOLTIP) 
 		m_pToolTip->Hide();	
+}
+
+BOOL CQListCtrl::IsToolTipWindowVisible() 
+{ 
+	return ::IsWindowVisible(m_toolTipHwnd); 
+}
+
+BOOL CQListCtrl::IsToolTipWindowFocus()
+{
+	return ::GetFocus() == m_toolTipHwnd ||
+		::GetParent(::GetFocus()) == m_toolTipHwnd;
 }

+ 2 - 1
QListCtrl.h

@@ -143,7 +143,8 @@ public:
 
 	BOOL OnItemDeleted(long lID);
 
-	BOOL IsToolTipWindowVisible() { return ::IsWindowVisible(m_toolTipHwnd); }
+	BOOL IsToolTipWindowVisible();
+	BOOL IsToolTipWindowFocus();
 
 	int GetRowHeight() { return m_rowHeight; }
 

+ 8 - 0
QPasteWnd.cpp

@@ -2965,6 +2965,9 @@ bool CQPasteWnd::DoActionNextDescription()
 	if (m_lstHeader.IsToolTipWindowVisible() == FALSE)
 		return false;
 
+	if (m_lstHeader.IsToolTipWindowFocus())
+		return false;
+
 	if (g_Opt.m_bAllwaysShowDescription)
 		return false;
 
@@ -3012,6 +3015,9 @@ bool CQPasteWnd::DoActionPrevDescription()
 	if (m_lstHeader.IsToolTipWindowVisible() == FALSE)
 		return false;
 
+	if (m_lstHeader.IsToolTipWindowFocus())
+		return false;
+
 	if (g_Opt.m_bAllwaysShowDescription)
 		return false;
 
@@ -5014,6 +5020,8 @@ LRESULT CQPasteWnd::OnToolTipWndInactive(WPARAM wParam, LPARAM lParam)
         }
     }
 
+	m_lstHeader.HidePopup();
+
     return TRUE;
 }
 

+ 2 - 1
ToolTipEx.cpp

@@ -223,8 +223,9 @@ BOOL CToolTipEx::Show(CPoint point)
 	}
 
 	m_saveWindowLockout = true;
-	ShowWindow(SW_SHOW);
 	MoveWindow(rect);
+	ShowWindow(SW_SHOWNA);
+	
 	m_saveWindowLockout = false;
 
     return TRUE;