Browse Source

added option to hide ditto on hot key if ditto is already visible

git-svn-id: svn://svn.code.sf.net/p/ditto-cp/code/trunk@84 595ec19a-5cb4-439b-94a8-42fb3063c22c
sabrogden 21 years ago
parent
commit
eff75e9e45
8 changed files with 42 additions and 9 deletions
  1. 8 5
      CP_Main.rc
  2. 9 2
      MainFrm.cpp
  3. 14 0
      Misc.cpp
  4. 4 0
      Misc.h
  5. 3 0
      OptionsGeneral.cpp
  6. 1 0
      OptionsGeneral.h
  7. 2 2
      QuickPaste.cpp
  8. 1 0
      Resource.h

+ 8 - 5
CP_Main.rc

@@ -462,7 +462,7 @@ BEGIN
                     49,288,106
 END
 
-IDD_OPTIONS_GENERAL DIALOG DISCARDABLE  0, 0, 294, 178
+IDD_OPTIONS_GENERAL DIALOG DISCARDABLE  0, 0, 294, 188
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "General"
 FONT 8, "MS Sans Serif"
@@ -495,10 +495,13 @@ BEGIN
     CONTROL         "Update Clip Time On Paste",IDC_UPDATE_TIME_ON_PASTE,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,131,101,10
     CONTROL         "Save Multi-Pastes",IDC_SAVE_MULTIPASTE,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,23,144,73,10
-    EDITTEXT        IDC_DESC_TEXT_SIZE,154,155,35,12,ES_AUTOHSCROLL
+                    BS_AUTOCHECKBOX | WS_TABSTOP,23,142,73,10
+    EDITTEXT        IDC_DESC_TEXT_SIZE,154,164,35,12,ES_AUTOHSCROLL
     LTEXT           "Amount of text to save for description",IDC_STATIC,24,
-                    156,122,8
+                    165,122,8
+    CONTROL         "Hide Ditto on Hot Key if Ditto is Visible",
+                    IDC_HIDE_DITO_ON_HOT_KEY,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,23,153,135,10
 END
 
 IDD_SELECT_DB DIALOG DISCARDABLE  0, 0, 276, 46
@@ -743,7 +746,7 @@ BEGIN
         LEFTMARGIN, 7
         RIGHTMARGIN, 287
         TOPMARGIN, 7
-        BOTTOMMARGIN, 170
+        BOTTOMMARGIN, 180
     END
 
     IDD_SELECT_DB, DIALOG

+ 9 - 2
MainFrm.cpp

@@ -184,8 +184,15 @@ LRESULT CMainFrame::OnHotKey(WPARAM wParam, LPARAM lParam)
 {
 	if(wParam == theApp.m_pDittoHotKey->m_Atom)
 	{
-		theApp.TargetActiveWindow();
-		QuickPaste.ShowQPasteWnd(this);
+		if(g_Opt.m_HideDittoOnHotKeyIfAlreadyShown && QuickPaste.IsWindowVisibleEx())
+		{
+			QuickPaste.HideQPasteWnd();
+		}
+		else
+		{
+			theApp.TargetActiveWindow();
+			QuickPaste.ShowQPasteWnd(this);
+		}
 	}
 	else if(wParam == theApp.m_pCopyHotKey->m_Atom)
 	{

+ 14 - 0
Misc.cpp

@@ -468,6 +468,7 @@ long CGetSetOptions::m_lAutoSendClientCount;
 CString CGetSetOptions::m_csIPListToPutOnClipboard;
 BOOL CGetSetOptions::m_bLogSendReceiveErrors;
 BOOL CGetSetOptions::m_bUseHookDllForFocus;
+BOOL CGetSetOptions::m_HideDittoOnHotKeyIfAlreadyShown;
 
 CGetSetOptions g_Opt;
 
@@ -489,6 +490,7 @@ CGetSetOptions::CGetSetOptions()
 	m_csIPListToPutOnClipboard = GetListToPutOnClipboard();
 	m_bLogSendReceiveErrors = GetLogSendReceiveErrors();
 	m_bUseHookDllForFocus = GetProfileLong("UseHookDllForFocus", TRUE);
+	m_HideDittoOnHotKeyIfAlreadyShown = GetHideDittoOnHotKeyIfAlreadyShown();
 
 	#ifdef _DEBUG
 	m_bUseHookDllForFocus = FALSE;
@@ -1046,6 +1048,18 @@ BOOL CGetSetOptions::GetLogSendReceiveErrors()
 	return GetProfileLong("LogSendReceiveErrors", FALSE);
 }
 
+BOOL CGetSetOptions::GetHideDittoOnHotKeyIfAlreadyShown()
+{
+	return GetProfileLong("HideDittoOnHotKeyIfAlreadyShown", FALSE);
+}
+
+void CGetSetOptions::SetHideDittoOnHotKeyIfAlreadyShown(BOOL bVal)
+{
+	m_HideDittoOnHotKeyIfAlreadyShown = bVal;
+
+	SetProfileLong("HideDittoOnHotKeyIfAlreadyShown", bVal);
+}
+
 /*------------------------------------------------------------------*\
 CHotKey - a single system-wide hotkey
 \*------------------------------------------------------------------*/

+ 4 - 0
Misc.h

@@ -287,6 +287,10 @@ public:
 
 	static BOOL		m_bUseHookDllForFocus;
 
+	static BOOL		m_HideDittoOnHotKeyIfAlreadyShown;
+	static BOOL		GetHideDittoOnHotKeyIfAlreadyShown();
+	static void		SetHideDittoOnHotKeyIfAlreadyShown(BOOL bVal);
+
 
 	/*
 	BOOL IsAutoRun();

+ 3 - 0
OptionsGeneral.cpp

@@ -32,6 +32,7 @@ void COptionsGeneral::DoDataExchange(CDataExchange* pDX)
 {
 	CPropertyPage::DoDataExchange(pDX);
 	//{{AFX_DATA_MAP(COptionsGeneral)
+	DDX_Control(pDX, IDC_HIDE_DITO_ON_HOT_KEY, m_btHideDittoOnHotKey);
 	DDX_Control(pDX, IDC_DESC_TEXT_SIZE, m_DescTextSize);
 	DDX_Control(pDX, IDC_GET_PATH, m_btGetPath);
 	DDX_Control(pDX, IDC_PATH, m_ePath);
@@ -83,6 +84,7 @@ BOOL COptionsGeneral::OnInitDialog()
 	m_btAllowDuplicates.SetCheck( g_Opt.m_bAllowDuplicates );
 	m_btUpdateTimeOnPaste.SetCheck( g_Opt.m_bUpdateTimeOnPaste );
 	m_btSaveMultiPaste.SetCheck( g_Opt.m_bSaveMultiPaste );
+	m_btHideDittoOnHotKey.SetCheck(g_Opt.m_HideDittoOnHotKeyIfAlreadyShown);
 
 	CString csPath = CGetSetOptions::GetDBPath(FALSE);
 	if(csPath.IsEmpty())
@@ -113,6 +115,7 @@ BOOL COptionsGeneral::OnApply()
 	CGetSetOptions::SetCheckForExpiredEntries(m_btExpire.GetCheck());
 	CGetSetOptions::SetCompactAndRepairOnExit(m_btCompactAndRepair.GetCheck());
 	CGetSetOptions::SetCheckForUpdates(m_btCheckForUpdates.GetCheck());
+	CGetSetOptions::SetHideDittoOnHotKeyIfAlreadyShown(m_btHideDittoOnHotKey.GetCheck());
 	
 	CGetSetOptions::SetMaxEntries(m_eMaxSavedCopies.GetNumber());
 	CGetSetOptions::SetExpiredEntries(m_eExpireAfter.GetNumber());

+ 1 - 0
OptionsGeneral.h

@@ -27,6 +27,7 @@ public:
 // Dialog Data
 	//{{AFX_DATA(COptionsGeneral)
 	enum { IDD = IDD_OPTIONS_GENERAL };
+	CButton	m_btHideDittoOnHotKey;
 	CNumberEdit	m_DescTextSize;
 	CButton	m_btGetPath;
 	CEdit	m_ePath;

+ 2 - 2
QuickPaste.cpp

@@ -68,7 +68,7 @@ BOOL CQuickPaste::CloseQPasteWnd()
 }
 
 void CQuickPaste::ShowQPasteWnd(CWnd *pParent, BOOL bAtPrevPos)
-{
+{		
 	{
 		if((theApp.m_bShowingQuickPaste) || (theApp.m_bShowingOptions))
 		{
@@ -151,7 +151,7 @@ void CQuickPaste::HideQPasteWnd()
 	if(m_pwndPaste)
 	{
 		if (IsWindow(m_pwndPaste->m_hWnd))
-			m_pwndPaste->ShowWindow(SW_HIDE);
+			m_pwndPaste->HideQPasteWindow();
 	}
 }
 

+ 1 - 0
Resource.h

@@ -70,6 +70,7 @@
 #define IDC_SAVE_MULTIPASTE             1039
 #define IDC_BUTTON1                     1040
 #define IDC_PARSE_BUTTON                1040
+#define IDC_HIDE_DITO_ON_HOT_KEY        1040
 #define IDC_PARSE_EDIT                  1041
 #define IDC_CHECK1                      1042
 #define IDC_HISTORY_START_TOP           1042