Skip to content

Commit

Permalink
Improve ctrl+space behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
itagagaki committed Dec 5, 2023
1 parent 429cc7c commit 8f380a2
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 48 deletions.
45 changes: 27 additions & 18 deletions Charu3Tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,24 +235,6 @@ void CCharu3Tree::setImageList(POINT posSize, CString strFileName, CString strPa
}
}

//---------------------------------------------------
//関数名 checkRedundancyID(int nID)
//機能 重複IDをチェック
//---------------------------------------------------
bool CCharu3Tree::checkRedundancyID(int nID)
{
bool isRet = false;
std::list<STRING_DATA>::iterator it;

for (it = m_MyStringList.begin(); it != m_MyStringList.end(); it++) {
if (it->m_nMyID == nID) {
isRet = true;
break;
}
}
return isRet;
}

//---------------------------------------------------
//関数名 checkMyChild(HTREEITEM hChildItem,int nMyID)
//機能 自分の子孫フォルダか調べる
Expand Down Expand Up @@ -754,6 +736,33 @@ bool CCharu3Tree::LoadDataWithPlugin(CString strFileName, CString strPlugin, std
return isRet;
}

int CCharu3Tree::makeNewID()
{
(*m_pMaxID)++;
while (checkRedundancyID(*m_pMaxID)) {
*m_pMaxID += 10;
}
return *m_pMaxID;
}

//---------------------------------------------------
//関数名 checkRedundancyID(int nID)
//機能 重複IDをチェック
//---------------------------------------------------
bool CCharu3Tree::checkRedundancyID(int nID)
{
bool isRet = false;
std::list<STRING_DATA>::iterator it;

for (it = m_MyStringList.begin(); it != m_MyStringList.end(); it++) {
if (it->m_nMyID == nID) {
isRet = true;
break;
}
}
return isRet;
}

//---------------------------------------------------
//関数名 normalizationID(list<STRING_DATA>* pList,int nParentID)
//機能 IDを正規化(ほとんどCharu2Proのデータ専用)
Expand Down
17 changes: 4 additions & 13 deletions Charu3Tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,8 @@ class CCharu3Tree : public CTreeCtrl

bool loadDataFileDef(CString strFileName, CString strPlugin);
bool loadDataFile(CString strFileName, CString strPlugin, std::list<STRING_DATA>* tmplist);
bool convertMacroPlugin(STRING_DATA* SourceData, CString* strRet, CString strSelect, CString strClip, CString strSoftName);

bool saveDataToFile(CString strFileName, CString strPlugin, HTREEITEM hStartItem);
bool convertMacroPlugin(STRING_DATA* SourceData, CString* strRet, CString strSelect, CString strClip, CString strSoftName);

void setInitInfo(int* pMaxID, int* pSelectID, int* pRecNumber) {
m_pMaxID = pMaxID;
Expand Down Expand Up @@ -194,18 +193,10 @@ class CCharu3Tree : public CTreeCtrl
std::list<STRING_DATA>::iterator findData(STRING_DATA* dataPtr);
int mergeList(std::list<STRING_DATA>* pMainList, std::list<STRING_DATA>* pList, int nParent);

int makeNewID() {
(*m_pMaxID)++;
while (checkRedundancyID(*m_pMaxID)) {
*m_pMaxID += 10;
}
return *m_pMaxID;
}
void setSelectID(int nID) {
*m_pSelectID = nID;
}
void normalizationID(std::list<STRING_DATA>* pList, int nParentID);
int makeNewID();
void setSelectID(int nID) { *m_pSelectID = nID; }
bool checkRedundancyID(int nID);
void normalizationID(std::list<STRING_DATA>* pList, int nParentID);

int getChildCount(HTREEITEM hTreeItem, bool isBrotherOnly = false);
HTREEITEM getFirstFolder(HTREEITEM hStartItem);
Expand Down
37 changes: 20 additions & 17 deletions MyTreeDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -680,23 +680,28 @@ BOOL CMyTreeDialog::PreTranslateMessage(MSG* pMsg)
if (theApp.m_ini.m_bSelectByTypingAutoPaste) KillTimer(CHARU_QUICK_TIMER);
HTREEITEM hTreeItem = m_pTreeCtrl->GetSelectedItem();
if (hTreeItem) {
if (::GetKeyState(VK_CONTROL) < 0) {//CTRLが押されている
HTREEITEM hSelItem = m_pTreeCtrl->GetSelectedItem();
m_pTreeCtrl->ToggleItemCheck(hSelItem);
hSelItem = m_pTreeCtrl->GetNextVisibleItem(hTreeItem);
if (hSelItem) hTreeItem = hSelItem;
bool goBackwards = ::GetKeyState(VK_SHIFT) < 0;
if (::GetKeyState(VK_CONTROL) < 0) {
m_pTreeCtrl->ToggleItemCheck(m_pTreeCtrl->GetSelectedItem());
hTreeItem = goBackwards ? m_pTreeCtrl->GetPrevSiblingItem(hTreeItem) : m_pTreeCtrl->GetNextSiblingItem(hTreeItem);
}
else if (::GetKeyState(VK_SHIFT) < 0) {//シフトが押されている
hTreeItem = m_pTreeCtrl->GetPrevVisibleItem(hTreeItem);//前のアイテムを取得
if (!hTreeItem) {
hTreeItem = m_pTreeCtrl->getLastVisibleItem();//一番上まで行ったら最後にループ
else {
if (goBackwards) {
hTreeItem = m_pTreeCtrl->GetPrevVisibleItem(hTreeItem);
if (!hTreeItem) {
hTreeItem = m_pTreeCtrl->getLastVisibleItem();
}
}
else {
hTreeItem = m_pTreeCtrl->GetNextVisibleItem(hTreeItem);
if (!hTreeItem) {
hTreeItem = m_pTreeCtrl->GetRootItem();
}
}
}
else {
hTreeItem = m_pTreeCtrl->GetNextVisibleItem(hTreeItem);
if (!hTreeItem) hTreeItem = m_pTreeCtrl->GetRootItem();
if (hTreeItem) {
m_pTreeCtrl->SelectItem(hTreeItem);
}
m_pTreeCtrl->SelectItem(hTreeItem);
}
else {//選択されてなかったら0番目を選択
m_pTreeCtrl->Select(m_pTreeCtrl->GetRootItem(), TVGN_FIRSTVISIBLE);
Expand Down Expand Up @@ -752,8 +757,7 @@ BOOL CMyTreeDialog::PreTranslateMessage(MSG* pMsg)
}
//TABキーでチェック
else if (VK_TAB == pMsg->wParam && !m_pTreeCtrl->IsDragging() && !m_isModal) {
HTREEITEM hSelItem = m_pTreeCtrl->GetSelectedItem();
m_pTreeCtrl->ToggleItemCheck(hSelItem);
m_pTreeCtrl->ToggleItemCheck(m_pTreeCtrl->GetSelectedItem());
return true;
}
//上下
Expand Down Expand Up @@ -1097,8 +1101,7 @@ void CMyTreeDialog::OnListSearch()

void CMyTreeDialog::OnCheckItem()
{
HTREEITEM hSelItem = m_pTreeCtrl->GetSelectedItem();
m_pTreeCtrl->ToggleItemCheck(hSelItem);
m_pTreeCtrl->ToggleItemCheck(m_pTreeCtrl->GetSelectedItem());
m_bCheckbox = true;
}

Expand Down

0 comments on commit 8f380a2

Please sign in to comment.