Skip to content

Commit

Permalink
Add Copy Selected Difference to Clipboard (#2429) (4)
Browse files Browse the repository at this point in the history
  • Loading branch information
sdottaka committed Oct 7, 2024
1 parent 28c0a93 commit d4c7f4d
Show file tree
Hide file tree
Showing 42 changed files with 174 additions and 61 deletions.
13 changes: 7 additions & 6 deletions Src/Merge.rc
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,10 @@ BEGIN
MENUITEM "Copy Selected Line(s) from Middle", ID_COPY_LINES_FROM_MIDDLE_R
MENUITEM "Copy Selected Line(s) from Left", ID_COPY_LINES_FROM_LEFT_R
MENUITEM SEPARATOR
MENUITEM "Copy Selected Diff (Left) to Clipboard\tCtrl+1", ID_SEL_DIFF_COPY_L
MENUITEM "Copy Selected Diff (Middle) to Clipboard\tCtrl+2", ID_SEL_DIFF_COPY_M
MENUITEM "Copy Selected Diff (Right) to Clipboard\tCtrl+3", ID_SEL_DIFF_COPY_R
MENUITEM "Copy Selected Diff (Left) to Clipboard\tCtrl+1", ID_SEL_DIFF_COPY_1ST
MENUITEM "Copy Selected Diff (Right) to Clipboard\tCtrl+2", ID_SEL_DIFF_COPY_2ND
MENUITEM "Copy Selected Diff (Middle) to Clipboard\tCtrl+2", ID_SEL_DIFF_COPY_2ND_3WAY
MENUITEM "Copy Selected Diff (Right) to Clipboard\tCtrl+3", ID_SEL_DIFF_COPY_3RD
MENUITEM SEPARATOR
MENUITEM "Select Line &Difference\tF4", ID_SELECTLINEDIFF
MENUITEM "Add this change to Substitution &Filters", ID_ADD_TO_IGNORED_SUBSTITUTIONS
Expand Down Expand Up @@ -1401,9 +1402,9 @@ BEGIN
VK_OEM_MINUS, ID_VIEW_ZOOMOUT, VIRTKEY, CONTROL, NOINVERT
VK_MULTIPLY, ID_VIEW_ZOOMNORMAL, VIRTKEY, CONTROL, NOINVERT
"0", ID_VIEW_ZOOMNORMAL, VIRTKEY, CONTROL, NOINVERT
"1", ID_SEL_DIFF_COPY_L, VIRTKEY, CONTROL, NOINVERT
"2", ID_SEL_DIFF_COPY_M, VIRTKEY, CONTROL, NOINVERT
"3", ID_SEL_DIFF_COPY_R, VIRTKEY, CONTROL, NOINVERT
"1", ID_SEL_DIFF_COPY_1ST, VIRTKEY, CONTROL, NOINVERT
"2", ID_SEL_DIFF_COPY_2ND, VIRTKEY, CONTROL, NOINVERT
"3", ID_SEL_DIFF_COPY_3RD, VIRTKEY, CONTROL, NOINVERT
END


Expand Down
83 changes: 40 additions & 43 deletions Src/MergeEditView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,12 +206,14 @@ BEGIN_MESSAGE_MAP(CMergeEditView, CCrystalEditViewEx)
ON_UPDATE_COMMAND_UI_RANGE(ID_COPY_TO_MIDDLE_L, ID_COPY_FROM_LEFT_R, OnUpdateX2Y)
ON_COMMAND_RANGE(ID_COPY_LINES_TO_MIDDLE_L, ID_COPY_LINES_FROM_LEFT_R, OnCopyLinesX2Y)
ON_UPDATE_COMMAND_UI_RANGE(ID_COPY_LINES_TO_MIDDLE_L, ID_COPY_LINES_FROM_LEFT_R, OnUpdateX2Y)
ON_COMMAND(ID_SEL_DIFF_COPY_L, OnSelDiffCopyLeft)
ON_UPDATE_COMMAND_UI(ID_SEL_DIFF_COPY_L, OnUpdateSelDiffCopyLeft)
ON_COMMAND(ID_SEL_DIFF_COPY_M, OnSelDiffCopyMid)
ON_UPDATE_COMMAND_UI(ID_SEL_DIFF_COPY_M, OnUpdateSelDiffCopyMid)
ON_COMMAND(ID_SEL_DIFF_COPY_R, OnSelDiffCopyRight)
ON_UPDATE_COMMAND_UI(ID_SEL_DIFF_COPY_R, OnUpdateSelDiffCopyRight)
ON_COMMAND(ID_SEL_DIFF_COPY_1ST, OnSelDiffCopyFirst)
ON_UPDATE_COMMAND_UI(ID_SEL_DIFF_COPY_1ST, OnUpdateSelDiffCopyFirst)
ON_COMMAND(ID_SEL_DIFF_COPY_2ND, OnSelDiffCopySecond)
ON_UPDATE_COMMAND_UI(ID_SEL_DIFF_COPY_2ND, OnUpdateSelDiffCopySecond)
ON_COMMAND(ID_SEL_DIFF_COPY_2ND_3WAY, OnSelDiffCopySecond)
ON_UPDATE_COMMAND_UI(ID_SEL_DIFF_COPY_2ND_3WAY, OnUpdateSelDiffCopySecond)
ON_COMMAND(ID_SEL_DIFF_COPY_3RD, OnSelDiffCopyThird)
ON_UPDATE_COMMAND_UI(ID_SEL_DIFF_COPY_3RD, OnUpdateSelDiffCopyThird)
// [Plugins] menu
ON_COMMAND_RANGE(ID_SCRIPT_FIRST, ID_SCRIPT_LAST, OnScripts)
ON_COMMAND(ID_TRANSFORM_WITH_SCRIPT, OnTransformWithScript)
Expand Down Expand Up @@ -2094,75 +2096,60 @@ void CMergeEditView::SelDiffCopy(int actPane)
{
CMergeDoc* pDoc = GetDocument();
const auto cntPane = pDoc->m_nBuffers;
const auto currentDiff = pDoc->GetCurrentDiff();

// Check
if (actPane < 0 || actPane > 2 || cntPane < 1 || currentDiff < 0)
if (actPane < 0 || actPane >= cntPane)
return;
if (2 == cntPane && actPane >= cntPane)
actPane = 1;

auto currentDiff = pDoc->GetCurrentDiff();
if (currentDiff == -1 && m_bCurrentLineIsDiff)
{
CEPoint pt = GetCursorPos();
currentDiff = pDoc->m_diffList.LineToDiff(pt.y);
}

DIFFRANGE di;
if (!pDoc->m_diffList.GetDiff(currentDiff, di))
return;
CDiffTextBuffer& buf = *(pDoc->m_ptBuf[actPane]);
const auto beginidx = buf.ComputeApparentLine(di.begin[actPane]);
const auto endidx = buf.ComputeApparentLine(di.end[actPane]);
const auto beginidx = di.dbegin;
const auto endidx = di.dend;
if (beginidx > endidx)
return;
String dfLines;
CDiffTextBuffer& buf = *(pDoc->m_ptBuf[actPane]);
const auto endlen = buf.GetLineLength(endidx);
buf.GetTextWithoutEmptys(beginidx, 0, endidx, endlen, dfLines);
dfLines += buf.GetLineEol(endidx);

if (OpenClipboard())
{
EmptyClipboard();
const size_t len = (dfLines.length() + 1) * sizeof(tchar_t);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len);
if (hGlobal)
{
LPTSTR pGlobal = (LPTSTR)GlobalLock(hGlobal);
if (pGlobal)
{
memcpy(pGlobal, dfLines.c_str(), len);
GlobalUnlock(hGlobal);
SetClipboardData(CF_UNICODETEXT, hGlobal);
}
GlobalFree(hGlobal);
}

CloseClipboard();
}
PutToClipboard(dfLines.c_str(), static_cast<int>(dfLines.length()));
}

void CMergeEditView::OnSelDiffCopyLeft()
void CMergeEditView::OnSelDiffCopyFirst()
{
SelDiffCopy(0);
}
void CMergeEditView::OnUpdateSelDiffCopyLeft(CCmdUI* pCmdUI)
void CMergeEditView::OnUpdateSelDiffCopyFirst(CCmdUI* pCmdUI)
{
pCmdUI->Enable(GetDocument()->GetCurrentDiff() >= 0 && GetDocument()->m_nBuffers > 0);
pCmdUI->Enable((GetDocument()->GetCurrentDiff() >= 0 || m_bCurrentLineIsDiff) && GetDocument()->m_nBuffers > 0);
}

void CMergeEditView::OnSelDiffCopyMid()
void CMergeEditView::OnSelDiffCopySecond()
{
SelDiffCopy(1);
}

void CMergeEditView::OnUpdateSelDiffCopyMid(CCmdUI* pCmdUI)
void CMergeEditView::OnUpdateSelDiffCopySecond(CCmdUI* pCmdUI)
{
pCmdUI->Enable(GetDocument()->GetCurrentDiff() >= 0 && GetDocument()->m_nBuffers > 2);
pCmdUI->Enable((GetDocument()->GetCurrentDiff() >= 0 || m_bCurrentLineIsDiff) && GetDocument()->m_nBuffers > 1);
}

void CMergeEditView::OnSelDiffCopyRight()
void CMergeEditView::OnSelDiffCopyThird()
{
SelDiffCopy(2);
SelDiffCopy(GetDocument()->m_nBuffers - 1);
}

void CMergeEditView::OnUpdateSelDiffCopyRight(CCmdUI* pCmdUI)
void CMergeEditView::OnUpdateSelDiffCopyThird(CCmdUI* pCmdUI)
{
pCmdUI->Enable(GetDocument()->GetCurrentDiff() >= 0 && GetDocument()->m_nBuffers > 1);
pCmdUI->Enable((GetDocument()->GetCurrentDiff() >= 0 || m_bCurrentLineIsDiff) && GetDocument()->m_nBuffers > 2);
}

/**
Expand Down Expand Up @@ -2979,6 +2966,16 @@ void CMergeEditView::OnContextMenu(CWnd* pWnd, CPoint point)
else if (nBuffers == 3 && m_nThisPane == 2)
menu.RemoveMenu(ID_GOTO_MOVED_LINE_LM, MF_BYCOMMAND);

if (nBuffers == 2)
{
menu.RemoveMenu(ID_SEL_DIFF_COPY_2ND_3WAY, MF_BYCOMMAND);
menu.RemoveMenu(ID_SEL_DIFF_COPY_3RD, MF_BYCOMMAND);
}
else
{
menu.RemoveMenu(ID_SEL_DIFF_COPY_2ND, MF_BYCOMMAND);
}

VERIFY(menu.LoadToolbar(IDR_MAINFRAME, GetMainFrame()->GetToolbar()));

BCMenu *pSub = static_cast<BCMenu *>(menu.GetSubMenu(0));
Expand Down
12 changes: 6 additions & 6 deletions Src/MergeEditView.h
Original file line number Diff line number Diff line change
Expand Up @@ -267,12 +267,12 @@ class CMergeEditView : public CGhostTextView
afx_msg void OnUpdateCopyFromRight(CCmdUI* pCmdUI);
afx_msg void OnCopyLinesFromRight();
afx_msg void OnUpdateCopyLinesFromRight(CCmdUI* pCmdUI);
afx_msg void OnSelDiffCopyLeft();
afx_msg void OnUpdateSelDiffCopyLeft(CCmdUI* pCmdUI);
afx_msg void OnSelDiffCopyMid();
afx_msg void OnUpdateSelDiffCopyMid(CCmdUI* pCmdUI);
afx_msg void OnSelDiffCopyRight();
afx_msg void OnUpdateSelDiffCopyRight(CCmdUI* pCmdUI);
afx_msg void OnSelDiffCopyFirst();
afx_msg void OnUpdateSelDiffCopyFirst(CCmdUI* pCmdUI);
afx_msg void OnSelDiffCopySecond();
afx_msg void OnUpdateSelDiffCopySecond(CCmdUI* pCmdUI);
afx_msg void OnSelDiffCopyThird();
afx_msg void OnUpdateSelDiffCopyThird(CCmdUI* pCmdUI);
afx_msg void OnAddSyncPoint();
afx_msg void OnClearSyncPoints();
afx_msg void OnUpdateClearSyncPoints(CCmdUI* pCmdUI);
Expand Down
11 changes: 6 additions & 5 deletions Src/resource.h
Original file line number Diff line number Diff line change
Expand Up @@ -1027,11 +1027,12 @@
#define ID_MICE_NEXTDIFF 33268
#define ID_MICE_L2R 33269
#define ID_MICE_R2L 33270
#define ID_SEL_DIFF_COPY_L 33271
#define ID_SEL_DIFF_COPY_M 33272
#define ID_SEL_DIFF_COPY_R 33273
#define ID_MICE_L2RNEXT 33274
#define ID_MICE_R2LNEXT 33275
#define ID_SEL_DIFF_COPY_1ST 33271
#define ID_SEL_DIFF_COPY_2ND 33272
#define ID_SEL_DIFF_COPY_3RD 33273
#define ID_SEL_DIFF_COPY_2ND_3WAY 33274
#define ID_MICE_L2RNEXT 33275
#define ID_MICE_R2LNEXT 33276
#define ID_TABBAR_AUTO_MAXWIDTH 33351
#define ID_IMG_VIEWDIFFERENCES 33353
#define ID_IMG_ZOOM_25 33354
Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Arabic.po
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ msgstr ""
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Basque.po
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ msgstr ""
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Brazilian.po
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ msgstr "Copiar a(s) linha(s) selecionada(s) da esquerda"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr "Copiar as Diferenças Selecionadas (da Esquerda) para a Área de Transferência\tCtrl+1"

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr "Copiar as Diferenças Selecionadas (da Direita) para a Área de Transferência\tCtrl+2"

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr "Copiar as Diferenças Selecionadas (do Meio) para a Área de Transferência\tCtrl+2"

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Bulgarian.po
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ msgstr "Копиране избраните редове от ляво"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Catalan.po
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ msgstr "Copia les línies seleccionades de l'esquerra"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/ChineseSimplified.po
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ msgstr "从左侧复制选中行"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr "复制选中差异(左)到剪贴板\tCtrl+1"

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr "复制选中差异(右)到剪贴板\tCtrl+2"

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr "复制选中差异(中)到剪贴板\tCtrl+2"

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/ChineseTraditional.po
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ msgstr "從左側複製所選行"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Corsican.po
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ msgstr "Cupià a(e) linea(e) selezziunata(e) da a manca"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Croatian.po
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ msgstr ""
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Czech.po
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ msgstr ""
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Danish.po
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ msgstr ""
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Dutch.po
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ msgstr "Geselecteerde regel(s) van links kopiëren"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
5 changes: 4 additions & 1 deletion Translations/WinMerge/English.pot
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WinMerge\n"
"Report-Msgid-Bugs-To: https://bugs.winmerge.org/\n"
"POT-Creation-Date: 2024-10-06 10:47+0000\n"
"POT-Creation-Date: 2024-10-07 08:25+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: English <[email protected]>\n"
Expand Down Expand Up @@ -59,6 +59,9 @@ msgstr ""
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Finnish.po
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ msgstr "Kopioi valittu(t) rivi(t) vasemmalta"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/French.po
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ msgstr "Copier les lignes sélectionnées depuis la Gauche"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr "Copier la différence sélectionnée (Gauche) dans le presse-papiers\tCtrl+1"

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr "Copier la différence sélectionnée (Droite) dans le presse-papiers\tCtrl+2"

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr "Copier la différence sélectionnée (Milieu) dans le presse-papiers\tCtrl+2"

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Galician.po
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ msgstr "Copiar liña(s) seleccionada(s) desde o esquerdo"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/German.po
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ msgstr "Ausgewählte Zeile(n) von links kopieren"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Greek.po
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ msgstr ""
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr ""

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr ""

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr ""

Expand Down
3 changes: 3 additions & 0 deletions Translations/WinMerge/Hungarian.po
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ msgstr "A kijelölt sor(ok) másolása balról"
msgid "Copy Selected Diff (Left) to Clipboard\tCtrl+1"
msgstr "A kijelölt különbség (bal) vágólapra másolása\tCtrl+1"

msgid "Copy Selected Diff (Right) to Clipboard\tCtrl+2"
msgstr "A kijelölt különbség (jobb) vágólapra &másolása\tCtrl+2"

msgid "Copy Selected Diff (Middle) to Clipboard\tCtrl+2"
msgstr "A kijelölt különbség (középső) vágólapra &másolása\tCtrl+2"

Expand Down
Loading

0 comments on commit d4c7f4d

Please sign in to comment.