Skip to content
Permalink
Browse files

Imp: 上下スクロールでEOFを一番上に表示オプション

[Common]
bVScrollEofViewTop=0 or 1
デフォルト0(無効)
  • Loading branch information...
mocaskr
mocaskr committed Apr 2, 2015
1 parent c2089da commit 889cf50bcd6b4c170757567beec173629fa40619
@@ -579,12 +579,15 @@
Version x182:
カーソル位置下のマウススクロール 2015.04.02 Moca
Version x183:
上下スクロールでEOFを一番上に表示 2015.04.02 Moca
-- 統合されたので元に戻す(1000~1023が使用済み) 2008.11.16 nasukoji
-- Version 1000:
-- バージョン1000以降を本家統合までの間、使わせてください。かなり頻繁に構成が変更されると思われるので。by kobake 2008.03.02
*/
#define N_SHAREDATA_VERSION 182
#define N_SHAREDATA_VERSION 183
#define STR_SHAREDATA_VERSION NUM_TO_STR(N_SHAREDATA_VERSION)
#define GSTR_SHAREDATA (_T("SakuraShareData") _T(CON_SKR_MACHINE_SUFFIX_) _T(_CODE_SUFFIX_) _T(_DEBUG_SUFFIX_) _T(STR_SHAREDATA_VERSION))

@@ -240,6 +240,7 @@ bool CShareData::InitShareData()
sGeneral.m_nPageScrollByWheel = 0; /* キー/マウスボタン + ホイールスクロールでページスクロールする */ // 2009.01.17 nasukoji
sGeneral.m_nHorizontalScrollByWheel = 0; /* キー/マウスボタン + ホイールスクロールで横スクロールする */ // 2009.01.17 nasukoji
sGeneral.m_bWheelScrollMousePosition = true;
sGeneral.m_bVScrollEofViewTop = false;

sGeneral.m_bUseTaskTray = TRUE; /* タスクトレイのアイコンを使う */
#ifdef _DEBUG
@@ -501,6 +501,7 @@ void CShareData_IO::ShareData_IO_Common( CDataProfile& cProfile, CDataProfile& c
cProfile.IOProfileData( pszSecName, LTEXT("nPageScrollByWheel") , common.m_sGeneral.m_nPageScrollByWheel ); // 2009.01.17 nasukoji
cProfile.IOProfileData( pszSecName, LTEXT("nHorizontalScrollByWheel") , common.m_sGeneral.m_nHorizontalScrollByWheel ); // 2009.01.17 nasukoji
cProfile.IOProfileData( pszSecName, LTEXT("bWheelScrollMousePosition") , common.m_sGeneral.m_bWheelScrollMousePosition );
cProfile.IOProfileData( pszSecName, LTEXT("bVScrollEofViewTop") , common.m_sGeneral.m_bVScrollEofViewTop );
cProfile.IOProfileData( pszSecName, LTEXT("bCloseAllConfirm") , common.m_sGeneral.m_bCloseAllConfirm ); /* [すべて閉じる]で他に編集用のウィンドウがあれば確認する */ // 2006.12.25 ryoji
cProfile.IOProfileData( pszSecName, LTEXT("bExitConfirm") , common.m_sGeneral.m_bExitConfirm );
cProfHis.IOProfileData( pszSecName, LTEXT("bSearchRegularExp") , common.m_sSearch.m_sSearchOption.bRegularExp );
@@ -75,6 +75,7 @@ struct CommonSetting_General
int m_nPageScrollByWheel; //!< キー/マウスボタン + ホイールスクロールでページUP/DOWNする // 2009.01.17 nasukoji
int m_nHorizontalScrollByWheel; //!< キー/マウスボタン + ホイールスクロールで横スクロールする // 2009.01.17 nasukoji
bool m_bWheelScrollMousePosition; //!< カーソル位置下のマウススクロール
bool m_bVScrollEofViewTop; //!< 上下スクロールでEOFを最上段に表示する

//タスクトレイ
BOOL m_bUseTaskTray; //!< タスクトレイのアイコンを使う
@@ -206,7 +206,17 @@ CLayoutInt CEditView::OnVScroll( int nScrollCode, int nPos )
nScrollVal = ScrollAtV( CLayoutInt(0) );
break;
case SB_BOTTOM:
nScrollVal = ScrollAtV(( m_pcEditDoc->m_cLayoutMgr.GetLineCount() ) - GetTextArea().m_nViewRowNum );
{
CLayoutYInt nAddLine;
if( GetDllShareData().m_Common.m_sGeneral.m_bVScrollEofViewTop ){
nAddLine = 0;
}else{
nAddLine = CLayoutYInt(1) - GetTextArea().m_nViewRowNum;
}
CLayoutPoint ptEof;
m_pcEditDoc->m_cLayoutMgr.GetEndLayoutPos(&ptEof);
nScrollVal = ScrollAtV(t_max(CLayoutYInt(0), ptEof.y + nAddLine));
}
break;
default:
break;
@@ -295,8 +305,15 @@ void CEditView::AdjustScrollBars()

if( NULL != m_hwndVScrollBar ){
/* 垂直スクロールバー */
const CLayoutInt nEofMargin = CLayoutInt(2); // EOFとその下のマージン
const CLayoutInt nAllLines = m_pcEditDoc->m_cLayoutMgr.GetLineCount() + nEofMargin;
CLayoutYInt nEofMargin;
if( GetDllShareData().m_Common.m_sGeneral.m_bVScrollEofViewTop ){
nEofMargin = GetTextArea().m_nViewRowNum;
}else{
nEofMargin = CLayoutInt(2);
}
CLayoutPoint ptEof;
m_pcEditDoc->m_cLayoutMgr.GetEndLayoutPos(&ptEof);
const CLayoutInt nAllLines = ptEof.y + nEofMargin;
int nVScrollRate = 1;
#ifdef _WIN64
/* nAllLines / nVScrollRate < INT_MAX となる整数nVScrollRateを求める */
@@ -361,11 +378,19 @@ CLayoutInt CEditView::ScrollAtV( CLayoutInt nPos )
CLayoutInt nScrollRowNum;
RECT rcScrol;
RECT rcClip;
CLayoutYInt nAddLine;
CLayoutPoint ptEof;
m_pcEditDoc->m_cLayoutMgr.GetEndLayoutPos(&ptEof);
if( GetDllShareData().m_Common.m_sGeneral.m_bVScrollEofViewTop ){
nAddLine = CLayoutYInt(0);
}else{
nAddLine = CLayoutYInt(2) - GetTextArea().m_nViewRowNum;
}
if( nPos < 0 ){
nPos = CLayoutInt(0);
}
else if( (m_pcEditDoc->m_cLayoutMgr.GetLineCount() + 2 )- GetTextArea().m_nViewRowNum < nPos ){
nPos = ( m_pcEditDoc->m_cLayoutMgr.GetLineCount() + CLayoutInt(2) ) - GetTextArea().m_nViewRowNum;
else if( ptEof.y + nAddLine < nPos ){
nPos = ptEof.y + nAddLine;
if( nPos < 0 ){
nPos = CLayoutInt(0);
}

0 comments on commit 889cf50

Please sign in to comment.
You can’t perform that action at this time.