فهرست منبع

added option to allways show description and setting for what double clicking on caption bar does.

git-svn-id: svn://svn.code.sf.net/p/ditto-cp/code/trunk@47 595ec19a-5cb4-439b-94a8-42fb3063c22c
sabrogden 22 سال پیش
والد
کامیت
f38dfc5242
8فایلهای تغییر یافته به همراه231 افزوده شده و 80 حذف شده
  1. 71 56
      CP_Main.rc
  2. 9 0
      Misc.cpp
  3. 12 0
      Misc.h
  4. 55 10
      QListCtrl.cpp
  5. 4 1
      QListCtrl.h
  6. 70 11
      QPasteWnd.cpp
  7. 4 0
      QPasteWnd.h
  8. 6 2
      Resource.h

+ 71 - 56
CP_Main.rc

@@ -1,4 +1,4 @@
-// Microsoft Visual C++ generated resource script.
+//Microsoft Developer Studio generated resource script.
 //
 #include "resource.h"
 
@@ -27,18 +27,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 // TEXTINCLUDE
 //
 
-1 TEXTINCLUDE 
+1 TEXTINCLUDE MOVEABLE PURE 
 BEGIN
     "resource.h\0"
 END
 
-2 TEXTINCLUDE 
+2 TEXTINCLUDE MOVEABLE PURE 
 BEGIN
     "#include ""afxres.h""\r\n"
     "\0"
 END
 
-3 TEXTINCLUDE 
+3 TEXTINCLUDE MOVEABLE PURE 
 BEGIN
     "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
     "#define _AFX_NO_OLE_RESOURCES\r\n"
@@ -67,22 +67,22 @@ END
 
 // Icon with lowest ID value placed first to ensure application icon
 // remains consistent on all systems.
-IDR_MAINFRAME           ICON                    "res\\Ditto.ico"
-IDR_CP_MAITYPE          ICON                    "res\\CP_MainDoc.ico"
+IDR_MAINFRAME           ICON    DISCARDABLE     "res\\Ditto.ico"
+IDR_CP_MAITYPE          ICON    DISCARDABLE     "res\\CP_MainDoc.ico"
 
 /////////////////////////////////////////////////////////////////////////////
 //
 // Bitmap
 //
 
-IDR_MAINFRAME           BITMAP                  "res\\Toolbar.bmp"
+IDR_MAINFRAME           BITMAP  MOVEABLE PURE   "res\\Toolbar.bmp"
 
 /////////////////////////////////////////////////////////////////////////////
 //
 // Toolbar
 //
 
-IDR_MAINFRAME TOOLBAR  16, 15
+IDR_MAINFRAME TOOLBAR MOVEABLE PURE  16, 15
 BEGIN
     BUTTON      ID_FILE_NEW
     BUTTON      ID_FILE_OPEN
@@ -103,7 +103,7 @@ END
 // Menu
 //
 
-IDR_MAINFRAME MENU 
+IDR_MAINFRAME MENU DISCARDABLE 
 BEGIN
     POPUP "&File"
     BEGIN
@@ -139,7 +139,7 @@ BEGIN
     END
 END
 
-IDR_MENU MENU 
+IDR_MENU MENU DISCARDABLE 
 BEGIN
     POPUP "First"
     BEGIN
@@ -153,7 +153,7 @@ BEGIN
     END
 END
 
-IDR_QUICK_PASTE MENU 
+IDR_QUICK_PASTE MENU DISCARDABLE 
 BEGIN
     POPUP "Menu"
     BEGIN
@@ -175,7 +175,7 @@ BEGIN
             BEGIN
                 MENUITEM "1",                           ID_MENU_LINESPERROW_1
 
-                MENUITEM "At Cursor",                   ID_MENU_POSITIONING_ATCURSOR
+                MENUITEM "2",                           ID_MENU_LINESPERROW_2
 
                 MENUITEM "3",                           ID_MENU_LINESPERROW_3
 
@@ -236,8 +236,20 @@ BEGIN
                 MENUITEM "Descending (Latest on the Bottom)", 
                                                         ID_SORT_DESCENDING
             END
+            POPUP "Double Clicking on Caption"
+            BEGIN
+                MENUITEM "Toggles Always on Top",       ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSONTOP
+
+                MENUITEM "Rolls-up Window",             ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_ROLLUPWINDOW
+
+                MENUITEM "Toggles Always Show Description", 
+                                                        ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSSHOWDESCRIPTION
+
+            END
             MENUITEM "Always on Top\tCtrl-Space",   ID_MENU_ALLWAYSONTOP
             MENUITEM "Auto Roll-up",                ID_MENU_AUTOHIDE
+            MENUITEM "Always Show Description",     ID_MENU_QUICKOPTIONS_ALLWAYSSHOWDESCRIPTION
+
         END
         MENUITEM SEPARATOR
         MENUITEM "Exit Program",                ID_MENU_EXITPROGRAM
@@ -250,7 +262,7 @@ END
 // Accelerator
 //
 
-IDR_MAINFRAME ACCELERATORS 
+IDR_MAINFRAME ACCELERATORS MOVEABLE PURE 
 BEGIN
     "N",            ID_FILE_NEW,            VIRTKEY, CONTROL
     "O",            ID_FILE_OPEN,           VIRTKEY, CONTROL
@@ -274,8 +286,8 @@ END
 // Dialog
 //
 
-IDD_ABOUTBOX DIALOG  0, 0, 235, 55
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_ABOUTBOX DIALOG DISCARDABLE  0, 0, 235, 55
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "About CP_Main"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -285,8 +297,8 @@ BEGIN
     DEFPUSHBUTTON   "OK",IDOK,178,7,50,14,WS_GROUP
 END
 
-IDD_OPTIONS_UTILITIES DIALOG  0, 0, 241, 137
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_OPTIONS_UTILITIES DIALOG DISCARDABLE  0, 0, 241, 137
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Database"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -297,8 +309,8 @@ BEGIN
     LTEXT           "Database Path:",IDC_STATIC,14,56,50,8
 END
 
-IDD_OPTIONS_TYPES DIALOG  0, 0, 230, 172
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_OPTIONS_TYPES DIALOG DISCARDABLE  0, 0, 230, 172
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Supported Types"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -309,9 +321,9 @@ BEGIN
 END
 
 IDD_OPTIONS_QUICK_PASTE DIALOGEX 0, 0, 206, 193
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Quick Paste"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "Enable Quick Paste Transparency",IDC_TRANSPARENCY,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,67,122,10
@@ -343,8 +355,8 @@ BEGIN
     GROUPBOX        "List Item Prefix Legend",IDC_STATIC,11,127,116,50
 END
 
-IDD_OPTIONS_KEYSTROKES DIALOG  0, 0, 186, 90
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_OPTIONS_KEYSTROKES DIALOG DISCARDABLE  0, 0, 186, 90
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Keyboard Shortcuts"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -356,8 +368,8 @@ BEGIN
     LTEXT           "Named Copy",IDC_STATIC,19,42,42,8
 END
 
-IDD_OPTIONS_GENERAL DIALOG  0, 0, 294, 178
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_OPTIONS_GENERAL DIALOG DISCARDABLE  0, 0, 294, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "General"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -395,8 +407,8 @@ BEGIN
                     156,122,8
 END
 
-IDD_SELECT_DB DIALOG  0, 0, 276, 46
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
+IDD_SELECT_DB DIALOG DISCARDABLE  0, 0, 276, 46
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
 CAPTION "Select Database"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -407,8 +419,8 @@ BEGIN
     PUSHBUTTON      "Use Default",IDC_USE_DEFAULT,27,25,50,14
 END
 
-IDD_OPTIONS_STATS DIALOG  0, 0, 272, 163
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_OPTIONS_STATS DIALOG DISCARDABLE  0, 0, 272, 163
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Stats"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -434,8 +446,8 @@ BEGIN
     EDITTEXT        IDC_DATABASE_SIZE,76,111,41,13,ES_AUTOHSCROLL
 END
 
-IDD_ADD_TYPE DIALOG  0, 0, 276, 230
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_ADD_TYPE DIALOG DISCARDABLE  0, 0, 276, 230
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Add Supported Type"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -454,9 +466,9 @@ BEGIN
 END
 
 IDD_COPY_PROPERTIES DIALOGEX 0, 0, 244, 211
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Copy Properties"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "HotKey1",IDC_HOTKEY,"msctls_hotkey32",WS_BORDER | 
                     WS_TABSTOP,37,7,82,13
@@ -480,8 +492,8 @@ BEGIN
     PUSHBUTTON      "Parse",IDC_PARSE_BUTTON,212,24,25,14
 END
 
-IDD_ABOUT DIALOG  0, 0, 292, 124
-STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+IDD_ABOUT DIALOG DISCARDABLE  0, 0, 292, 124
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "About"
 FONT 8, "MS Sans Serif"
 BEGIN
@@ -491,6 +503,7 @@ BEGIN
 END
 
 
+#ifndef _MAC
 /////////////////////////////////////////////////////////////////////////////
 //
 // Version
@@ -513,13 +526,13 @@ BEGIN
     BEGIN
         BLOCK "040904b0"
         BEGIN
-            VALUE "FileDescription", "Ditto"
-            VALUE "FileVersion", "1, 50, 0, 0"
-            VALUE "InternalName", "CP_Main"
-            VALUE "LegalCopyright", "Copyright (C) 2003"
-            VALUE "OriginalFilename", "Ditto"
-            VALUE "ProductName", "Ditto"
-            VALUE "ProductVersion", "1, 50, 0, 0"
+            VALUE "FileDescription", "Ditto\0"
+            VALUE "FileVersion", "1, 50, 0, 0\0"
+            VALUE "InternalName", "CP_Main\0"
+            VALUE "LegalCopyright", "Copyright (C) 2003\0"
+            VALUE "OriginalFilename", "Ditto\0"
+            VALUE "ProductName", "Ditto\0"
+            VALUE "ProductVersion", "1, 50, 0, 0\0"
         END
     END
     BLOCK "VarFileInfo"
@@ -528,6 +541,8 @@ BEGIN
     END
 END
 
+#endif    // !_MAC
+
 
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -535,7 +550,7 @@ END
 //
 
 #ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO 
+GUIDELINES DESIGNINFO MOVEABLE PURE 
 BEGIN
     IDD_ABOUTBOX, DIALOG
     BEGIN
@@ -633,18 +648,18 @@ END
 // String Table
 //
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     IDR_MAINFRAME           "CP_Main\n\nCP_Mai\n\n\nCPMain.Document\nCP_Mai Document"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     AFX_IDS_APP_TITLE       "CP_Main"
     AFX_IDS_IDLEMESSAGE     "Ready"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_INDICATOR_EXT        "EXT"
     ID_INDICATOR_CAPS       "CAP"
@@ -654,7 +669,7 @@ BEGIN
     ID_INDICATOR_REC        "REC"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_FILE_NEW             "Create a new document\nNew"
     ID_FILE_OPEN            "Open an existing document\nOpen"
@@ -667,13 +682,13 @@ BEGIN
     ID_FILE_PRINT_PREVIEW   "Display full pages\nPrint Preview"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_APP_ABOUT            "Display program information, version number and copyright\nAbout"
     ID_APP_EXIT             "Quit the application; prompts to save documents\nExit"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_FILE_MRU_FILE1       "Open this document"
     ID_FILE_MRU_FILE2       "Open this document"
@@ -693,18 +708,18 @@ BEGIN
     ID_FILE_MRU_FILE16      "Open this document"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_NEXT_PANE            "Switch to the next window pane\nNext Pane"
     ID_PREV_PANE            "Switch back to the previous window pane\nPrevious Pane"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_WINDOW_SPLIT         "Split the active window into panes\nSplit"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_EDIT_CLEAR           "Erase the selection\nErase"
     ID_EDIT_CLEAR_ALL       "Erase everything\nErase All"
@@ -719,13 +734,13 @@ BEGIN
     ID_EDIT_REDO            "Redo the previously undone action\nRedo"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     ID_VIEW_TOOLBAR         "Show or hide the toolbar\nToggle ToolBar"
     ID_VIEW_STATUS_BAR      "Show or hide the status bar\nToggle StatusBar"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     AFX_IDS_SCSIZE          "Change the window size"
     AFX_IDS_SCMOVE          "Change the window position"
@@ -736,13 +751,13 @@ BEGIN
     AFX_IDS_SCCLOSE         "Close the active window and prompts to save the documents"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     AFX_IDS_SCRESTORE       "Restore the window to normal size"
     AFX_IDS_SCTASKLIST      "Activate Task List"
 END
 
-STRINGTABLE 
+STRINGTABLE DISCARDABLE 
 BEGIN
     AFX_IDS_PREVIEW_CLOSE   "Close print preview mode\nCancel Preview"
 END

+ 9 - 0
Misc.cpp

@@ -406,6 +406,8 @@ BOOL CGetSetOptions::m_bShowPersistent;
 BOOL CGetSetOptions::m_bHistoryStartTop;
 long CGetSetOptions::m_bDescTextSize;
 BOOL CGetSetOptions::m_bDescShowLeadingWhiteSpace;
+BOOL CGetSetOptions::m_bAllwaysShowDescription;
+LONG CGetSetOptions::m_bDoubleClickingOnCaptionDoes;
 
 CGetSetOptions g_Opt;
 
@@ -420,6 +422,8 @@ CGetSetOptions::CGetSetOptions()
 	m_bHistoryStartTop = GetHistoryStartTop();
 	m_bDescTextSize = GetDescTextSize();
 	m_bDescShowLeadingWhiteSpace = GetDescShowLeadingWhiteSpace();
+	m_bAllwaysShowDescription = GetAllwaysShowDescription();
+	m_bDoubleClickingOnCaptionDoes = GetDoubleClickingOnCaptionDoes();
 }
 
 CGetSetOptions::~CGetSetOptions()
@@ -879,6 +883,11 @@ long CGetSetOptions::GetDescTextSize()			{	return GetProfileLong("DescTextSize",
 void CGetSetOptions::SetDescShowLeadingWhiteSpace(BOOL bVal){  SetProfileLong("DescShowLeadingWhiteSpace", bVal); m_bDescShowLeadingWhiteSpace = bVal; }
 BOOL CGetSetOptions::GetDescShowLeadingWhiteSpace()         {  return GetProfileLong("DescShowLeadingWhiteSpace", FALSE); }
 
+void CGetSetOptions::SetAllwaysShowDescription(long bShow)	{	SetProfileLong("AllwaysShowDescription", bShow); m_bAllwaysShowDescription = bShow; }
+BOOL CGetSetOptions::GetAllwaysShowDescription()			{	return GetProfileLong("AllwaysShowDescription", FALSE); }
+
+void CGetSetOptions::SetDoubleClickingOnCaptionDoes(long lOption)	{	SetProfileLong("DoubleClickingOnCaptionDoes", lOption); m_bDoubleClickingOnCaptionDoes = lOption; }
+long CGetSetOptions::GetDoubleClickingOnCaptionDoes()				{	return GetProfileLong("DoubleClickingOnCaptionDoes", TOGGLES_ALLWAYS_ON_TOP); }
 /*------------------------------------------------------------------*\
 	CHotKey - a single system-wide hotkey
 \*------------------------------------------------------------------*/

+ 12 - 0
Misc.h

@@ -77,6 +77,10 @@ CString GetFilePath(CString csFullPath);
 #define CAPTION_LEFT	3
 #define CAPTION_TOP		4
 
+#define TOGGLES_ALLWAYS_ON_TOP				1
+#define TOGGLES_ALLWAYS_SHOW_DESCRIPTION	2
+#define	ROLLES_UP_WINDOW					3
+
 //Message to the main window to show icon or not
 #define WM_SHOW_TRAY_ICON		WM_USER + 200
 #define WM_CV_RECONNECT			WM_USER + 201
@@ -227,6 +231,14 @@ public:
 	static void		SetDescShowLeadingWhiteSpace(BOOL bVal);
 	static BOOL		GetDescShowLeadingWhiteSpace();
 
+	static BOOL		m_bAllwaysShowDescription;
+	static void		SetAllwaysShowDescription(long bShow);
+	static BOOL		GetAllwaysShowDescription();
+
+	static long		m_bDoubleClickingOnCaptionDoes;
+	static void		SetDoubleClickingOnCaptionDoes(long lOption);
+	static long		GetDoubleClickingOnCaptionDoes();
+
 	/*
 	BOOL IsAutoRun();
 	void SetAutoRun(BOOL bRun);

+ 55 - 10
QListCtrl.cpp

@@ -109,6 +109,9 @@ BEGIN_MESSAGE_MAP(CQListCtrl, CListCtrl)
 	ON_WM_CREATE()
 	ON_WM_VSCROLL()
 	ON_WM_HSCROLL()
+	ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnSelectionChange)
+	ON_WM_TIMER()
+	ON_WM_WINDOWPOSCHANGED()
 	//}}AFX_MSG_MAP
 	ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
 	ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
@@ -633,13 +636,6 @@ DWORD dID;
 
 	switch(pMsg->message) 
 	{
-	case WM_LBUTTONDOWN:
-	case WM_RBUTTONDOWN:
-		if(m_Popup.m_bIsShowing)
-		{
-			m_Popup.Hide();
-		}
-		break;
 	case WM_KEYDOWN:
 		WPARAM vk = pMsg->wParam;
 		
@@ -719,13 +715,20 @@ DWORD dID;
 	return CListCtrl::PreTranslateMessage(pMsg);
 }
 
-void CQListCtrl::ShowFullDescription()
+void CQListCtrl::ShowFullDescription(bool bFromAuto)
 {
 	int nItem = GetCaret();
-	CRect rc;
+	CRect rc, crWindow;
+	GetWindowRect(&crWindow);
 	GetItemRect(nItem, rc, LVIR_BOUNDS);
 	ClientToScreen(rc);
-	m_Popup.m_Pos = CPoint(rc.left, rc.bottom); // rc.top??
+
+	if(bFromAuto == false)
+	{
+		m_Popup.m_Pos = CPoint(rc.left, rc.bottom);
+	}
+	else
+		m_Popup.m_Pos = CPoint((crWindow.left + (crWindow.right - crWindow.left)/2), rc.bottom);
 	CString cs;
 	GetToolTipText(nItem, cs);
 	m_Popup.Show( cs );
@@ -808,3 +811,45 @@ BOOL CQListCtrl::SetItemCountEx(int iCount, DWORD dwFlags /* = LVSICF_NOINVALIDA
 	theApp.SetStatus(NULL, TRUE);
 	return CListCtrl::SetItemCountEx(iCount, dwFlags);
 }
+
+#define TIMER_SHOW_PROPERTIES	1
+
+void CQListCtrl::OnSelectionChange(NMHDR* pNMHDR, LRESULT* pResult)
+{
+	NMLISTVIEW *pnmv = (NMLISTVIEW *) pNMHDR;
+
+	if((pnmv->uNewState == 3) ||
+		(pnmv->uNewState == 1))
+	{
+		if(m_Popup.m_bIsShowing)
+		{
+			m_Popup.Hide();
+		}
+		if(g_Opt.m_bAllwaysShowDescription)
+		{
+			KillTimer(TIMER_SHOW_PROPERTIES);
+			SetTimer(TIMER_SHOW_PROPERTIES, 300, NULL);
+		}
+	}
+}
+
+void CQListCtrl::OnTimer(UINT nIDEvent) 
+{
+	if(nIDEvent == TIMER_SHOW_PROPERTIES)
+	{
+		ShowFullDescription(true);
+		KillTimer(TIMER_SHOW_PROPERTIES);
+	}
+	
+	CListCtrl::OnTimer(nIDEvent);
+}
+
+void CQListCtrl::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
+{
+	CListCtrl::OnWindowPosChanged(lpwndpos);
+	
+	if(m_Popup.m_bIsShowing)
+	{
+		m_Popup.Hide();
+	}
+}

+ 4 - 1
QListCtrl.h

@@ -86,7 +86,7 @@ public:
 
 	void DestroyAndCreateAccelerator(BOOL bCreate);
 
-	void ShowFullDescription();
+	void ShowFullDescription(bool bFromAuto = false);
 	BOOL SetItemCountEx(int iCount, DWORD dwFlags = LVSICF_NOINVALIDATEALL);
 
 protected:
@@ -112,6 +112,9 @@ protected:
 	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
 	afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+	afx_msg void OnTimer(UINT nIDEvent);
+	afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
+	afx_msg void OnSelectionChange(NMHDR* pNMHDR, LRESULT* pResult);
 	//}}AFX_MSG
 	afx_msg BOOL OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
 	DECLARE_MESSAGE_MAP()

+ 70 - 11
QPasteWnd.cpp

@@ -77,6 +77,10 @@ BEGIN_MESSAGE_MAP(CQPasteWnd, CWndEx)
 	ON_NOTIFY(LVN_ODFINDITEM, ID_LIST_HEADER, OnFindItem)
 	ON_COMMAND(ID_MENU_FIRSTTENHOTKEYS_USECTRLNUM, OnMenuFirsttenhotkeysUsectrlnum)
 	ON_COMMAND(ID_MENU_FIRSTTENHOTKEYS_SHOWHOTKEYTEXT, OnMenuFirsttenhotkeysShowhotkeytext)
+	ON_COMMAND(ID_MENU_QUICKOPTIONS_ALLWAYSSHOWDESCRIPTION, OnMenuQuickoptionsAllwaysshowdescription)
+	ON_COMMAND(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSONTOP, OnMenuQuickoptionsDoubleclickingoncaptionTogglesalwaysontop)
+	ON_COMMAND(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_ROLLUPWINDOW, OnMenuQuickoptionsDoubleclickingoncaptionRollupwindow)
+	ON_COMMAND(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSSHOWDESCRIPTION, OnMenuQuickoptionsDoubleclickingoncaptionTogglesshowdescription)
 	//}}AFX_MSG_MAP
 	ON_MESSAGE(NM_SELECT, OnListSelect)
 	ON_MESSAGE(NM_END, OnListEnd)
@@ -618,6 +622,8 @@ void CQPasteWnd::OnRclickQuickPaste(NMHDR* pNMHDR, LRESULT* pResult)
 
 		SetMenuChecks(cmSubMenu);
 
+		m_lstHeader.m_Popup.Hide();
+
 		cmSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON,
 				pp.x, pp.y, this, NULL);
 	}
@@ -741,6 +747,24 @@ void CQPasteWnd::SetMenuChecks(CMenu *pMenu)
 		pMenu->CheckMenuItem(ID_VIEWCAPTIONBARON_TOP, MF_CHECKED);
 		break;
 	}
+
+	if(CGetSetOptions::GetAllwaysShowDescription())
+	{
+		pMenu->CheckMenuItem(ID_MENU_QUICKOPTIONS_ALLWAYSSHOWDESCRIPTION, MF_CHECKED);
+	}
+
+	switch(CGetSetOptions::GetDoubleClickingOnCaptionDoes())
+	{
+		case TOGGLES_ALLWAYS_ON_TOP:
+			pMenu->CheckMenuItem(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSONTOP, MF_CHECKED);
+			break;
+		case TOGGLES_ALLWAYS_SHOW_DESCRIPTION:
+			pMenu->CheckMenuItem(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_ROLLUPWINDOW, MF_CHECKED);
+			break;
+		case ROLLES_UP_WINDOW:
+			pMenu->CheckMenuItem(ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSSHOWDESCRIPTION, MF_CHECKED);
+			break;
+	}
 }
 
 LRESULT CQPasteWnd::OnSearch(WPARAM wParam, LPARAM lParam)
@@ -961,6 +985,38 @@ void CQPasteWnd::OnSortDescending()
 	FillList();
 }
 
+void CQPasteWnd::OnMenuNewGroup()
+{
+	NewGroup( false );
+}
+
+void CQPasteWnd::OnMenuNewGroupSelection()
+{
+	NewGroup( true );
+}
+
+void CQPasteWnd::OnMenuQuickoptionsAllwaysshowdescription() 
+{
+	CGetSetOptions::SetAllwaysShowDescription(!g_Opt.m_bAllwaysShowDescription);
+	
+}
+
+void CQPasteWnd::OnMenuQuickoptionsDoubleclickingoncaptionTogglesalwaysontop() 
+{
+	CGetSetOptions::SetDoubleClickingOnCaptionDoes(TOGGLES_ALLWAYS_ON_TOP);
+	
+}
+
+void CQPasteWnd::OnMenuQuickoptionsDoubleclickingoncaptionRollupwindow() 
+{
+	CGetSetOptions::SetDoubleClickingOnCaptionDoes(ROLLES_UP_WINDOW);
+	
+}
+
+void CQPasteWnd::OnMenuQuickoptionsDoubleclickingoncaptionTogglesshowdescription() 
+{
+	CGetSetOptions::SetDoubleClickingOnCaptionDoes(TOGGLES_ALLWAYS_SHOW_DESCRIPTION);	
+}
 
 ///////////////////////////////////////////////////////////////////////
 //END END Menu Stuff
@@ -1374,7 +1430,20 @@ void CQPasteWnd::OnNcLButtonDblClk(UINT nHitTest, CPoint point)
 {
 	// toggle ShowPersistent when we double click the caption
 	if( nHitTest == HTCAPTION )
-		theApp.ShowPersistent( !g_Opt.m_bShowPersistent );
+	{
+		switch(g_Opt.m_bDoubleClickingOnCaptionDoes)
+		{
+		case TOGGLES_ALLWAYS_ON_TOP:
+			theApp.ShowPersistent( !g_Opt.m_bShowPersistent );
+			break;
+		case TOGGLES_ALLWAYS_SHOW_DESCRIPTION:
+			CGetSetOptions::SetAllwaysShowDescription(!g_Opt.m_bAllwaysShowDescription);
+			break;
+		case ROLLES_UP_WINDOW:
+			MinMaxWindow();
+			break;
+		}
+	}
 
 	CWndEx::OnNcLButtonDblClk(nHitTest, point);
 }
@@ -1423,13 +1492,3 @@ void CQPasteWnd::OnSelectionChange(NMHDR* pNMHDR, LRESULT* pResult)
 	if( m_lstHeader.GetSelectedCount() > 0 )
 		theApp.SetStatus(NULL, TRUE);
 }
-
-void CQPasteWnd::OnMenuNewGroup()
-{
-	NewGroup( false );
-}
-
-void CQPasteWnd::OnMenuNewGroupSelection()
-{
-	NewGroup( true );
-}

+ 4 - 0
QPasteWnd.h

@@ -126,6 +126,10 @@ protected:
 	afx_msg void OnFindItem(NMHDR* pNMHDR, LRESULT* pResult);
 	afx_msg void OnMenuFirsttenhotkeysUsectrlnum();
 	afx_msg void OnMenuFirsttenhotkeysShowhotkeytext();
+	afx_msg void OnMenuQuickoptionsAllwaysshowdescription();
+	afx_msg void OnMenuQuickoptionsDoubleclickingoncaptionTogglesalwaysontop();
+	afx_msg void OnMenuQuickoptionsDoubleclickingoncaptionRollupwindow();
+	afx_msg void OnMenuQuickoptionsDoubleclickingoncaptionTogglesshowdescription();
 	//}}AFX_MSG
 	afx_msg LRESULT OnListSelect(WPARAM wParam, LPARAM lParam);
 	afx_msg LRESULT OnListEnd(WPARAM wParam, LPARAM lParam);

+ 6 - 2
Resource.h

@@ -1,5 +1,5 @@
 //{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
+// Microsoft Developer Studio generated include file.
 // Used by CP_Main.rc
 //
 #define IDD_ABOUTBOX                    100
@@ -121,6 +121,10 @@
 #define ID_MENU_QUICKOPTIONS            32809
 #define ID_MENU_NEWGROUP                32811
 #define ID_MENU_NEWGROUPSELECTION       32812
+#define ID_MENU_QUICKOPTIONS_ALLWAYSSHOWDESCRIPTION 32813
+#define ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSONTOP 32814
+#define ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_ROLLUPWINDOW 32815
+#define ID_MENU_QUICKOPTIONS_DOUBLECLICKINGONCAPTION_TOGGLESALWAYSSHOWDESCRIPTION 32816
 
 // Next default values for new objects
 // 
@@ -128,7 +132,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_3D_CONTROLS                     1
 #define _APS_NEXT_RESOURCE_VALUE        138
-#define _APS_NEXT_COMMAND_VALUE         32813
+#define _APS_NEXT_COMMAND_VALUE         32817
 #define _APS_NEXT_CONTROL_VALUE         2022
 #define _APS_NEXT_SYMED_VALUE           101
 #endif