[BUG_FIXED] Fixed two bugs when calculating the width of the TeskList (document list when pressing ctrl+tab or right-click + mouse wheel.

1. max width was not calculated correctly
 2. style of selected file font (bold) wasn't taken into consideration

also - changed background color to light yellow instead of light gray.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@463 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
Yuval 2009-04-25 10:39:25 +00:00
parent d5475beb3e
commit 19befa9797
4 changed files with 32 additions and 18 deletions

View File

@ -45,6 +45,7 @@ const COLORREF brown = RGB(128, 64, 0);
//const COLORREF greenBlue = RGB(192, 128, 64);
const COLORREF darkYellow = RGB(0xFF, 0xC0, 0);
const COLORREF yellow = RGB(0xFF, 0xFF, 0);
const COLORREF lightYellow = RGB(0xFF, 0xFF, 0xD5);
const COLORREF cyan = RGB(0, 0xFF, 0xFF);
const COLORREF orange = RGB(0xFF, 0x80, 0x00);
const COLORREF purple = RGB(0x80, 0x00, 0xFF);

View File

@ -76,8 +76,7 @@ void TaskList::init(HINSTANCE hInst, HWND parent, HIMAGELIST hImaLst, int nbItem
ListView_SetImageList(_hSelf, hImaLst, LVSIL_SMALL);
ListView_SetItemState(_hSelf, _currentIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
ListView_SetBkColor(_hSelf, veryLiteGrey);
ListView_SetTextBkColor(_hSelf, veryLiteGrey);
ListView_SetBkColor(_hSelf, lightYellow);
}
RECT TaskList::adjustSize()
@ -87,21 +86,24 @@ RECT TaskList::adjustSize()
const int imgWidth = rc.right - rc.left;
const int marge = 30;
// Temporary set "selected" font to get the worst case widths
::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFontSelected), 0);
int maxwidth = -1;
_rc.left = 0;
_rc.top = 0;
_rc.bottom = 0;
for (int i = 0 ; i < _nbItem ; i++)
{
TCHAR buf[MAX_PATH];
ListView_GetItemText(_hSelf, i, 0, buf, MAX_PATH);
int width = ListView_GetStringWidth(_hSelf, buf);
if (width > (_rc.right - _rc.left))
_rc.right = _rc.left + width + imgWidth + marge;
if (width > maxwidth)
maxwidth = width;
_rc.bottom += rc.bottom - rc.top;
}
// additional space for horizontal scroll-bar
_rc.bottom += rc.bottom - rc.top;
_rc.right = maxwidth + imgWidth + marge;
::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFont), 0);
reSizeTo(_rc);
return _rc;

View File

@ -29,7 +29,7 @@
class TaskList : public Window
{
public:
TaskList() : Window(), _currentIndex(0) {
TaskList() : Window(), _currentIndex(0), _hFont(NULL), _hFontSelected(NULL) {
_rc.left = 0;
_rc.top = 0;
_rc.right = 150;
@ -41,6 +41,8 @@ public:
virtual void destroy(){
if (_hFont)
DeleteObject(_hFont);
if (_hFontSelected)
DeleteObject(_hFontSelected);
::DestroyWindow(_hSelf);
_hSelf = NULL;
};
@ -50,26 +52,36 @@ public:
void setFont(TCHAR *fontName, size_t fontSize) {
if (_hFont)
::DeleteObject(_hFont);
if (_hFontSelected)
::DeleteObject(_hFontSelected);
_hFont = ::CreateFont( fontSize, 0, 0, 0,
_hFont = ::CreateFont(fontSize, 0, 0, 0,
FW_NORMAL,
0, 0, 0, 0,
0, 0, 0, 0,
fontName);
_hFontSelected = ::CreateFont(fontSize, 0, 0, 0,
FW_BOLD,
0, 0, 0, 0,
0, 0, 0, 0,
fontName);
if (_hFont)
::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFont), 0);
};
RECT adjustSize();
int getCurrentIndex() const {
return _currentIndex;
};
int getCurrentIndex() const {return _currentIndex;}
int updateCurrentIndex();
HIMAGELIST getImgLst() const {
return ListView_GetImageList(_hSelf, LVSIL_SMALL);
};
HFONT GetFontSelected() {return _hFontSelected;}
protected:
WNDPROC _defaultProc;
@ -80,6 +92,7 @@ protected:
};
HFONT _hFont;
HFONT _hFontSelected;
int _nbItem;
int _currentIndex;
RECT _rc;

View File

@ -216,9 +216,7 @@ private :
{
imgStyle = ILD_TRANSPARENT;
textColor = black;
HFONT selectedFont = (HFONT)::GetStockObject(SYSTEM_FONT);
::SelectObject(hDC, selectedFont);
::SelectObject(hDC, _taskList.GetFontSelected());
}
//