|
@@ -48,7 +48,6 @@ static char THIS_FILE[] = __FILE__;
|
|
|
CQPasteWnd::CQPasteWnd()
|
|
|
{
|
|
|
m_Title = QPASTE_TITLE;
|
|
|
- m_bHideWnd = true;
|
|
|
m_strSQLSearch = "";
|
|
|
m_bAllowRepaintImmediately = true;
|
|
|
m_bHandleSearchTextChange = true;
|
|
@@ -107,8 +106,7 @@ BEGIN_MESSAGE_MAP(CQPasteWnd, CWndEx)
|
|
|
ON_COMMAND(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_ROLLUPWINDOW, OnMenuQuickoptionsDoubleclickingoncaptionRollupwindow)
|
|
|
ON_COMMAND(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSSHOWDESCRIPTION, OnMenuQuickoptionsDoubleclickingoncaptionTogglesshowdescription)
|
|
|
ON_COMMAND(ID_MENU_QUICKOPTIONS_PROMPTFORNEWGROUPNAMES, OnMenuQuickoptionsPromptfornewgroupnames)
|
|
|
- ON_BN_CLICKED(ID_SHOW_GROUPS_BOTTOM, OnShowGroupsBottom)
|
|
|
- ON_BN_CLICKED(ID_SHOW_GROUPS_TOP, OnShowGroupsTop)
|
|
|
+ ON_BN_CLICKED(ID_SHOW_GROUPS_BOTTOM, OnShowGroups)
|
|
|
ON_COMMAND(ID_MENU_VIEWGROUPS, OnMenuViewgroups)
|
|
|
ON_COMMAND(ID_MENU_QUICKPROPERTIES_SETTONEVERAUTODELETE, OnMenuQuickpropertiesSettoneverautodelete)
|
|
|
ON_COMMAND(ID_MENU_QUICKPROPERTIES_AUTODELETE, OnMenuQuickpropertiesAutodelete)
|
|
@@ -233,11 +231,14 @@ int CQPasteWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- ((CWnd *)&m_GroupTree)->CreateEx(NULL, _T("SysTreeView32"), NULL, WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS, CRect(0, 0, 100, 100), this, 0);
|
|
|
- m_GroupTree.ModifyStyle(WS_CAPTION, WS_BORDER);
|
|
|
-
|
|
|
- m_GroupTree.SetNotificationWndEx(m_hWnd);
|
|
|
- m_GroupTree.ShowWindow(SW_HIDE);
|
|
|
+ m_GroupWnd.CreateEx(NULL, _T("SysTreeView32"), NULL, WS_POPUP, CRect(0, 0, 0, 0), this, 0);
|
|
|
+ m_GroupWnd.SetNotifyWnd(m_hWnd);
|
|
|
+
|
|
|
+ CPoint Point;
|
|
|
+ CSize Size;
|
|
|
+ CGetSetOptions::GetQuickPastePoint(Point);
|
|
|
+ CGetSetOptions::GetQuickPasteSize(Size);
|
|
|
+ m_GroupWnd.MoveWindow(Point.x, Point.y, Size.cx, Size.cy);
|
|
|
|
|
|
m_ShowGroupsFolderBottom.Create(NULL, WS_CHILD | BS_OWNERDRAW | WS_TABSTOP, CRect(0, 0, 0, 0), this, ID_SHOW_GROUPS_BOTTOM);
|
|
|
m_ShowGroupsFolderBottom.LoadBitmaps(IDB_CLOSED_FOLDER, IDB_CLOSED_FOLDER_PRESSED, IDB_CLOSED_FOLDER_FOCUSED);
|
|
@@ -297,7 +298,11 @@ int CQPasteWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
m_SearchingEvent = CreateEvent(NULL, TRUE, FALSE, _T(""));
|
|
|
|
|
|
AfxBeginThread(StartThread, this);
|
|
|
-
|
|
|
+
|
|
|
+ AddWindowToSnapTo(&m_GroupWnd);
|
|
|
+ SetMoveAttachedWnds(true);
|
|
|
+ m_GroupWnd.AddWindowToSnapTo(this);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -365,7 +370,7 @@ void CQPasteWnd::OnSetFocus(CWnd* pOldWnd)
|
|
|
{
|
|
|
CWndEx::OnSetFocus(pOldWnd);
|
|
|
|
|
|
- ::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
|
|
|
+ //::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
|
|
|
|
|
|
// Set the focus to the list control
|
|
|
if(::IsWindow(m_lstHeader.m_hWnd))
|
|
@@ -375,22 +380,23 @@ void CQPasteWnd::OnSetFocus(CWnd* pOldWnd)
|
|
|
void CQPasteWnd::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
|
|
|
{
|
|
|
CWndEx::OnActivate(nState, pWndOther, bMinimized);
|
|
|
-
|
|
|
- if(m_bHideWnd == false || m_lstHeader.GetToolTipHWnd() == pWndOther->GetSafeHwnd())
|
|
|
- return;
|
|
|
-
|
|
|
+
|
|
|
if (nState == WA_INACTIVE)
|
|
|
{
|
|
|
- if(!g_Opt.m_bShowPersistent)
|
|
|
+ HWND hNew = ::GetForegroundWindow();
|
|
|
+ DWORD OtherThreadID = GetWindowThreadProcessId(hNew, NULL);
|
|
|
+ DWORD ThisThreadID = GetWindowThreadProcessId(m_hWnd, NULL);
|
|
|
+
|
|
|
+ if(OtherThreadID != ThisThreadID)
|
|
|
{
|
|
|
HideQPasteWindow();
|
|
|
- }
|
|
|
-
|
|
|
- //re register the global hot keys for the last ten
|
|
|
- if(theApp.m_bAppExiting == false)
|
|
|
- g_HotKeys.RegisterAll();
|
|
|
+
|
|
|
+ //re register the global hot keys for the last ten
|
|
|
+ if(theApp.m_bAppExiting == false)
|
|
|
+ g_HotKeys.RegisterAll();
|
|
|
|
|
|
- m_lstHeader.HidePopup();
|
|
|
+ m_lstHeader.HidePopup();
|
|
|
+ }
|
|
|
}
|
|
|
else if (nState == WA_ACTIVE || nState == WA_CLICKACTIVE)
|
|
|
{
|
|
@@ -418,7 +424,6 @@ BOOL CQPasteWnd::HideQPasteWindow()
|
|
|
theApp.ReleaseFocus();
|
|
|
|
|
|
SetEvent(m_Events[THREAD_DESTROY_ACCELERATORS]);
|
|
|
-// m_lstHeader.DestroyAndCreateAccelerator(FALSE);
|
|
|
|
|
|
KillTimer(TIMER_FILL_CACHE);
|
|
|
|
|
@@ -428,8 +433,14 @@ BOOL CQPasteWnd::HideQPasteWindow()
|
|
|
CGetSetOptions::SetQuickPasteSize(rect.Size());
|
|
|
CGetSetOptions::SetQuickPastePoint(rect.TopLeft());
|
|
|
|
|
|
+ //Save the group wnd size
|
|
|
+ m_GroupWnd.GetWindowRect(&rect);
|
|
|
+ CGetSetOptions::SetGroupWndSize(rect.Size());
|
|
|
+ CGetSetOptions::SetGroupWndPoint(rect.TopLeft());
|
|
|
+
|
|
|
// Hide the window when the focus is lost
|
|
|
ShowWindow(SW_HIDE);
|
|
|
+ m_GroupWnd.ShowWindow(SW_HIDE);
|
|
|
|
|
|
//Reset the selection in the search combo
|
|
|
m_bHandleSearchTextChange = false;
|
|
@@ -469,8 +480,6 @@ BOOL CQPasteWnd::ShowQPasteWindow(BOOL bFillList)
|
|
|
|
|
|
SetEvent(m_Events[THREAD_FILL_ACCELERATORS]);
|
|
|
|
|
|
- m_bHideWnd = true;
|
|
|
-
|
|
|
#ifdef AFTER_98
|
|
|
//Set the transparency
|
|
|
if(CGetSetOptions::GetEnableTransparency())
|
|
@@ -503,11 +512,7 @@ BOOL CQPasteWnd::ShowQPasteWindow(BOOL bFillList)
|
|
|
|
|
|
// from now on, for interactive use, we can repaint immediately
|
|
|
m_bAllowRepaintImmediately = true;
|
|
|
-
|
|
|
- // always on top... for persistent showing (g_Opt.m_bShowPersistent)
|
|
|
- // SHOWWINDOW was also integrated into this function rather than calling it separately
|
|
|
- ::SetWindowPos( m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW );
|
|
|
-
|
|
|
+
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
@@ -614,12 +619,8 @@ BOOL CQPasteWnd::NewGroup( bool bGroupSelection )
|
|
|
CString csName("");
|
|
|
|
|
|
if(g_Opt.m_bPrompForNewGroupName)
|
|
|
- {
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
+ {
|
|
|
int nRet = Name.DoModal();
|
|
|
-
|
|
|
- m_bHideWnd = true;
|
|
|
|
|
|
if(nRet == IDOK)
|
|
|
csName = Name.m_csName;
|
|
@@ -711,6 +712,13 @@ LRESULT CQPasteWnd::OnRefreshView(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
|
theApp.m_FocusID = -1;
|
|
|
|
|
|
+ if (((int)wParam) > 0)
|
|
|
+ {
|
|
|
+ int nCaretPos = m_lstHeader.GetCaret();
|
|
|
+ if(nCaretPos >= 0 && theApp.m_FocusID < 0)
|
|
|
+ theApp.m_FocusID = m_lstHeader.GetItemData(nCaretPos);
|
|
|
+ }
|
|
|
+
|
|
|
if(theApp.m_bShowingQuickPaste)
|
|
|
{
|
|
|
FillList();
|
|
@@ -1209,8 +1217,6 @@ void CQPasteWnd::OnMenuToggleConnectCV()
|
|
|
|
|
|
void CQPasteWnd::OnMenuProperties()
|
|
|
{
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
ARRAY IDs, Indexes;
|
|
|
m_lstHeader.GetSelectionItemData(IDs);
|
|
|
m_lstHeader.GetSelectionIndexes(Indexes);
|
|
@@ -1263,8 +1269,6 @@ void CQPasteWnd::OnMenuProperties()
|
|
|
m_lstHeader.SetFocus();
|
|
|
m_lstHeader.SetListPos(nRow);
|
|
|
}
|
|
|
-
|
|
|
- m_bHideWnd = true;
|
|
|
}
|
|
|
|
|
|
void CQPasteWnd::UpdateFont()
|
|
@@ -1382,7 +1386,7 @@ void CQPasteWnd::OnMenuQuickoptionsPromptfornewgroupnames()
|
|
|
|
|
|
void CQPasteWnd::OnMenuViewgroups()
|
|
|
{
|
|
|
- OnShowGroupsTop();
|
|
|
+ OnShowGroups();
|
|
|
}
|
|
|
|
|
|
void CQPasteWnd::OnMenuQuickpropertiesSettoneverautodelete()
|
|
@@ -1609,8 +1613,6 @@ void CQPasteWnd::OnMenuSenttoPromptforip()
|
|
|
|
|
|
void CQPasteWnd::OnMenuGroupsMovetogroup()
|
|
|
{
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
CMoveToGroupDlg dlg;
|
|
|
|
|
|
int nRet = dlg.DoModal();
|
|
@@ -1626,8 +1628,6 @@ void CQPasteWnd::OnMenuGroupsMovetogroup()
|
|
|
}
|
|
|
FillList();
|
|
|
}
|
|
|
-
|
|
|
- m_bHideWnd = true;
|
|
|
}
|
|
|
|
|
|
void CQPasteWnd::OnMenuPasteplaintextonly()
|
|
@@ -1680,8 +1680,6 @@ void CQPasteWnd::OnMenuExport()
|
|
|
ofn.lpstrDefExt = _T("dto");
|
|
|
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT;
|
|
|
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
if(GetSaveFileName(&ofn))
|
|
|
{
|
|
|
using namespace nsPath;
|
|
@@ -1692,15 +1690,11 @@ void CQPasteWnd::OnMenuExport()
|
|
|
CString csFile(ofn.lpstrFile);
|
|
|
IDs.Export(csFile);
|
|
|
}
|
|
|
-
|
|
|
- m_bHideWnd = true;
|
|
|
}
|
|
|
|
|
|
void CQPasteWnd::OnMenuImport()
|
|
|
{
|
|
|
- m_bHideWnd = false;
|
|
|
theApp.ImportClips(m_hWnd);
|
|
|
- m_bHideWnd = true;
|
|
|
}
|
|
|
|
|
|
void CQPasteWnd::OnMenuHelp()
|
|
@@ -1713,8 +1707,6 @@ void CQPasteWnd::OnMenuHelp()
|
|
|
|
|
|
void CQPasteWnd::OnMenuQuickoptionsFont()
|
|
|
{
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
CFont *pFont = m_lstHeader.GetFont();
|
|
|
LOGFONT lf;
|
|
|
pFont->GetLogFont(&lf);
|
|
@@ -1724,8 +1716,6 @@ void CQPasteWnd::OnMenuQuickoptionsFont()
|
|
|
CGetSetOptions::SetFont(*dlg.m_cf.lpLogFont);
|
|
|
m_lstHeader.SetLogFont(*dlg.m_cf.lpLogFont);
|
|
|
}
|
|
|
-
|
|
|
- m_bHideWnd = true;
|
|
|
}
|
|
|
|
|
|
void CQPasteWnd::OnMenuQuickoptionsShowthumbnails()
|
|
@@ -1795,8 +1785,6 @@ BOOL CQPasteWnd::SendToFriendbyPos(int nPos)
|
|
|
{
|
|
|
CWaitCursor wait;
|
|
|
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
CClipIDs IDs;
|
|
|
long lCount = m_lstHeader.GetSelectedCount();
|
|
|
if(lCount <= 0)
|
|
@@ -1847,8 +1835,6 @@ BOOL CQPasteWnd::SendToFriendbyPos(int nPos)
|
|
|
}
|
|
|
CATCH_SQLITE_EXCEPTION
|
|
|
|
|
|
- m_bHideWnd = true;
|
|
|
-
|
|
|
return bRet;
|
|
|
}
|
|
|
|
|
@@ -1863,12 +1849,7 @@ void CQPasteWnd::DeleteSelectedRows()
|
|
|
{
|
|
|
if(g_Opt.GetPromptWhenDeletingClips())
|
|
|
{
|
|
|
- bool bStartValue = m_bHideWnd;
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
int nRet = MessageBox(theApp.m_Language.GetString("Delete_Clip", "Delete Selected Clips?"), _T("Ditto"), MB_YESNO);
|
|
|
-
|
|
|
- m_bHideWnd = bStartValue;
|
|
|
|
|
|
if(nRet == IDNO)
|
|
|
return;
|
|
@@ -1993,11 +1974,11 @@ BOOL CQPasteWnd::PreTranslateMessage(MSG* pMsg)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(m_GroupTree.IsWindowVisible() == FALSE)
|
|
|
+ /* if(m_GroupTree.IsWindowVisible() == FALSE)
|
|
|
{
|
|
|
HideQPasteWindow();
|
|
|
return TRUE;
|
|
|
- }
|
|
|
+ }*/
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
@@ -2021,7 +2002,7 @@ BOOL CQPasteWnd::PreTranslateMessage(MSG* pMsg)
|
|
|
case 'G':
|
|
|
if(GetKeyState(VK_CONTROL) & 0x8000)
|
|
|
{
|
|
|
- OnShowGroupsTop();
|
|
|
+ OnShowGroups();
|
|
|
return TRUE;
|
|
|
}
|
|
|
case 'N':
|
|
@@ -2307,6 +2288,8 @@ void CQPasteWnd::OnNcLButtonDblClk(UINT nHitTest, CPoint point)
|
|
|
{
|
|
|
case TOGGLES_ALLWAYS_ON_TOP:
|
|
|
theApp.ShowPersistent( !g_Opt.m_bShowPersistent );
|
|
|
+ ::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
|
|
|
+
|
|
|
break;
|
|
|
case TOGGLES_ALLWAYS_SHOW_DESCRIPTION:
|
|
|
CGetSetOptions::SetAllwaysShowDescription(!g_Opt.m_bAllwaysShowDescription);
|
|
@@ -2326,8 +2309,6 @@ void CQPasteWnd::OnWindowPosChanging(WINDOWPOS* lpwndpos)
|
|
|
{
|
|
|
CWndEx::OnWindowPosChanging(lpwndpos);
|
|
|
|
|
|
-// m_lstHeader.HidePopup();
|
|
|
-
|
|
|
CRect rcScreen;
|
|
|
|
|
|
CRect cr(lpwndpos->x, lpwndpos->y, lpwndpos->x + lpwndpos->cx, lpwndpos->y + lpwndpos->cy);
|
|
@@ -2360,55 +2341,30 @@ void CQPasteWnd::OnWindowPosChanging(WINDOWPOS* lpwndpos)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void CQPasteWnd::OnShowGroupsTop()
|
|
|
-{
|
|
|
- OnShowGroupsBottom();
|
|
|
- return;
|
|
|
- m_GroupTree.m_bHide = false;
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
- CRect crList;
|
|
|
- m_lstHeader.GetWindowRect(crList);
|
|
|
-
|
|
|
- CRect cr(crList.left, crList.top, crList.left + crList.Width(), crList.top + 200);
|
|
|
-
|
|
|
- m_GroupTree.MoveWindow(cr);
|
|
|
- m_GroupTree.m_lSelectedFolderID = theApp.m_GroupID;
|
|
|
- m_GroupTree.FillTree();
|
|
|
- m_GroupTree.ShowWindow(SW_SHOW);
|
|
|
-
|
|
|
- m_GroupTree.m_bHide = true;
|
|
|
- m_bHideWnd = true;
|
|
|
-}
|
|
|
-
|
|
|
-void CQPasteWnd::OnShowGroupsBottom()
|
|
|
+void CQPasteWnd::OnShowGroups()
|
|
|
{
|
|
|
- m_GroupTree.m_bHide = false;
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
- CRect crWindow, crList;
|
|
|
- m_lstHeader.GetWindowRect(crList);
|
|
|
- GetWindowRect(crWindow);
|
|
|
-
|
|
|
- CRect cr(crWindow.left, crWindow.bottom, crWindow.left + crWindow.Width(), crWindow.bottom + 200);
|
|
|
-
|
|
|
- m_GroupTree.MoveWindow(cr);
|
|
|
- m_GroupTree.m_lSelectedFolderID = theApp.m_GroupID;
|
|
|
- m_GroupTree.FillTree();
|
|
|
- m_GroupTree.ShowWindow(SW_SHOW);
|
|
|
-
|
|
|
- m_GroupTree.m_bHide = true;
|
|
|
- m_bHideWnd = true;
|
|
|
+ if(m_GroupWnd.IsWindowVisible())
|
|
|
+ {
|
|
|
+ m_GroupWnd.ShowWindow(SW_HIDE);
|
|
|
+ SetFocus();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ m_GroupWnd.RefreshTree(-1);
|
|
|
+ m_GroupWnd.ShowWindow(SW_SHOW);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
LRESULT CQPasteWnd::OnGroupTreeMessage(WPARAM wParam, LPARAM lParam)
|
|
|
{
|
|
|
- m_bHideWnd = false;
|
|
|
-
|
|
|
+ if(lParam == TRUE)
|
|
|
+ {
|
|
|
+ HideQPasteWindow();
|
|
|
+ return TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
long lID = (long)wParam;
|
|
|
|
|
|
- m_GroupTree.ShowWindow(SW_HIDE);
|
|
|
-
|
|
|
m_bHandleSearchTextChange = false;
|
|
|
m_Search.SetWindowText(_T(""));
|
|
|
m_bHandleSearchTextChange = true;
|
|
@@ -2436,8 +2392,6 @@ LRESULT CQPasteWnd::OnGroupTreeMessage(WPARAM wParam, LPARAM lParam)
|
|
|
HideQPasteWindow();
|
|
|
}
|
|
|
|
|
|
- m_bHideWnd = true;
|
|
|
-
|
|
|
return TRUE;
|
|
|
}
|
|
|
|