Skip to content

Commit e8f681c

Browse files
committed
Add copy filename
1 parent 6813c19 commit e8f681c

4 files changed

Lines changed: 37 additions & 1 deletion

File tree

RadNotepad.rc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ BEGIN
341341
MENUITEM "&Close", ID_FILE_CLOSE
342342
MENUITEM "Close All", ID_FILE_CLOSEALL
343343
MENUITEM "Close Others", ID_FILE_CLOSEOTHERS
344+
MENUITEM "Copy Filename", ID_TAB_COPYFILENAME
344345
END
345346
END
346347

Resource.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@
138138
#define ID_VIEW_DARKMODE 32902
139139
#define ID_VIEW_TRAILINGSPACES 32903
140140
#define ID_EDIT_DELETETRAILINGSPACES 32904
141+
#define ID_TAB_COPYFILENAME 32905
141142
#define ID_TOOLS_FIRSTTOOL 33000
142143
#define ID_TOOLS_LASTTOOL 33099
143144
#define ID_VIEW_FIRSTSCHEME 33100
@@ -148,7 +149,7 @@
148149
#ifdef APSTUDIO_INVOKED
149150
#ifndef APSTUDIO_READONLY_SYMBOLS
150151
#define _APS_NEXT_RESOURCE_VALUE 335
151-
#define _APS_NEXT_COMMAND_VALUE 32905
152+
#define _APS_NEXT_COMMAND_VALUE 32906
152153
#define _APS_NEXT_CONTROL_VALUE 1009
153154
#define _APS_NEXT_SYMED_VALUE 313
154155
#endif

src/RadNotepadDoc.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@
1919
#define new DEBUG_NEW
2020
#endif
2121

22+
#ifdef UNICODE
23+
#define CF_TTEXT CF_UNICODETEXT
24+
#else
25+
#define CF_TTEXT CF_TEXT
26+
#endif
27+
2228
static std::unique_ptr<CInternetSession> g_pInternetSession;
2329

2430
static CString GetSourceUrlName(LPCTSTR lpszFileName)
@@ -137,6 +143,8 @@ BEGIN_MESSAGE_MAP(CRadNotepadDoc, CScintillaDoc)
137143
ON_UPDATE_COMMAND_UI(ID_FILE_READONLY, &CRadNotepadDoc::OnUpdateFileReadOnly)
138144
ON_COMMAND_RANGE(ID_ENCODING_ANSI, ID_ENCODING_UTF8, &CRadNotepadDoc::OnEncoding)
139145
ON_UPDATE_COMMAND_UI_RANGE(ID_ENCODING_ANSI, ID_ENCODING_UTF8, &CRadNotepadDoc::OnUpdateEncoding)
146+
ON_COMMAND(ID_TAB_COPYFILENAME, &CRadNotepadDoc::OnTabCopyFilename)
147+
ON_UPDATE_COMMAND_UI(ID_TAB_COPYFILENAME, &CRadNotepadDoc::OnUpdateTabCopyFilename)
140148
END_MESSAGE_MAP()
141149

142150

@@ -666,3 +674,27 @@ void CRadNotepadDoc::OnUpdateEncoding(CCmdUI *pCmdUI)
666674
Encoding e = static_cast<Encoding>(pCmdUI->m_nID - ID_ENCODING_ANSI);
667675
pCmdUI->SetCheck(e == m_eEncoding);
668676
}
677+
678+
void CRadNotepadDoc::OnTabCopyFilename()
679+
{
680+
if (AfxGetMainWnd()->OpenClipboard())
681+
{
682+
EmptyClipboard();
683+
684+
const SIZE_T length = GetPathName().GetLength() + 1;
685+
HGLOBAL hClip = GlobalAlloc(GHND | GMEM_SHARE, length * sizeof(TCHAR));
686+
AFXASSUME(hClip != NULL);
687+
TCHAR* pText = (TCHAR*) GlobalLock(hClip);
688+
AFXASSUME(pText != NULL);
689+
_tcscpy_s(pText, length, GetPathName());
690+
GlobalUnlock(hClip);
691+
SetClipboardData(CF_TTEXT, hClip);
692+
693+
CloseClipboard();
694+
}
695+
}
696+
697+
void CRadNotepadDoc::OnUpdateTabCopyFilename(CCmdUI* pCmdUI)
698+
{
699+
pCmdUI->Enable(!GetPathName().IsEmpty());
700+
}

src/RadNotepadDoc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,6 @@ class CRadNotepadDoc : public Scintilla::CScintillaDoc
6767
afx_msg void OnUpdateFileReadOnly(CCmdUI *pCmdUI);
6868
afx_msg void OnEncoding(UINT nID);
6969
afx_msg void OnUpdateEncoding(CCmdUI *pCmdUI);
70+
afx_msg void OnTabCopyFilename();
71+
afx_msg void OnUpdateTabCopyFilename(CCmdUI* pCmdUI);
7072
};

0 commit comments

Comments
 (0)