mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
[MSPAINT] Update scroll info on loading file (#5761)
The scroll info was not updated when the file is loading. - Rename CCanvasWindow::Update as CCanvasWindow::updateScrollInfo. - Update scroll info on ImageModel::NotifyImageChanged. - Improve ImageModel::ClearHistory. CORE-19094
This commit is contained in:
parent
3579ea7888
commit
1a90009bb9
4 changed files with 26 additions and 7 deletions
|
@ -180,7 +180,7 @@ VOID CCanvasWindow::DoDraw(HDC hDC, RECT& rcClient, RECT& rcPaint)
|
||||||
::DeleteDC(hdcMem0);
|
::DeleteDC(hdcMem0);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID CCanvasWindow::Update(HWND hwndFrom)
|
VOID CCanvasWindow::updateScrollInfo()
|
||||||
{
|
{
|
||||||
CRect rcClient;
|
CRect rcClient;
|
||||||
GetClientRect(&rcClient);
|
GetClientRect(&rcClient);
|
||||||
|
@ -214,7 +214,7 @@ VOID CCanvasWindow::Update(HWND hwndFrom)
|
||||||
LRESULT CCanvasWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
LRESULT CCanvasWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||||
{
|
{
|
||||||
if (m_hWnd)
|
if (m_hWnd)
|
||||||
Update(m_hWnd);
|
updateScrollInfo();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -245,7 +245,7 @@ VOID CCanvasWindow::OnHVScroll(WPARAM wParam, INT fnBar)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SetScrollInfo(fnBar, &si);
|
SetScrollInfo(fnBar, &si);
|
||||||
Update(m_hWnd);
|
updateScrollInfo();
|
||||||
Invalidate(FALSE); // FIXME: Flicker
|
Invalidate(FALSE); // FIXME: Flicker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,7 +627,7 @@ LRESULT CCanvasWindow::OnLRButtonUp(BOOL bLeftButton, UINT nMsg, WPARAM wParam,
|
||||||
|
|
||||||
m_hitCanvasSizeBox = HIT_NONE;
|
m_hitCanvasSizeBox = HIT_NONE;
|
||||||
toolsModel.resetTool(); // resets the point-buffer of the polygon and bezier functions
|
toolsModel.resetTool(); // resets the point-buffer of the polygon and bezier functions
|
||||||
Update(NULL);
|
updateScrollInfo();
|
||||||
Invalidate(TRUE);
|
Invalidate(TRUE);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ public:
|
||||||
|
|
||||||
VOID cancelDrawing();
|
VOID cancelDrawing();
|
||||||
VOID finishDrawing();
|
VOID finishDrawing();
|
||||||
VOID Update(HWND hwndFrom);
|
VOID updateScrollInfo();
|
||||||
|
|
||||||
VOID ImageToCanvas(POINT& pt);
|
VOID ImageToCanvas(POINT& pt);
|
||||||
VOID ImageToCanvas(RECT& rc);
|
VOID ImageToCanvas(RECT& rc);
|
||||||
|
|
|
@ -274,8 +274,14 @@ HBITMAP DoLoadImageFile(HWND hwnd, LPCWSTR name, BOOL fIsMainFile)
|
||||||
CImageDx img;
|
CImageDx img;
|
||||||
float xDpi = 0, yDpi = 0;
|
float xDpi = 0, yDpi = 0;
|
||||||
HRESULT hr = img.LoadDx(name, &xDpi, &yDpi);
|
HRESULT hr = img.LoadDx(name, &xDpi, &yDpi);
|
||||||
|
if (FAILED(hr) && fIsMainFile)
|
||||||
|
{
|
||||||
|
imageModel.ClearHistory();
|
||||||
|
hr = img.LoadDx(name, &xDpi, &yDpi);
|
||||||
|
}
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
|
ATLTRACE("hr: 0x%08lX\n", hr);
|
||||||
ShowError(IDS_LOADERRORTEXT, name);
|
ShowError(IDS_LOADERRORTEXT, name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,13 @@ ImageModel imageModel;
|
||||||
void ImageModel::NotifyImageChanged()
|
void ImageModel::NotifyImageChanged()
|
||||||
{
|
{
|
||||||
if (canvasWindow.IsWindow())
|
if (canvasWindow.IsWindow())
|
||||||
canvasWindow.Invalidate(FALSE);
|
{
|
||||||
|
canvasWindow.updateScrollInfo();
|
||||||
|
canvasWindow.Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
if (miniature.IsWindow())
|
if (miniature.IsWindow())
|
||||||
miniature.Invalidate(FALSE);
|
miniature.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageModel::ImageModel()
|
ImageModel::ImageModel()
|
||||||
|
@ -99,6 +103,15 @@ void ImageModel::ResetToPrevious()
|
||||||
|
|
||||||
void ImageModel::ClearHistory()
|
void ImageModel::ClearHistory()
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < HISTORYSIZE; ++i)
|
||||||
|
{
|
||||||
|
if (m_hBms[i] && i != m_currInd)
|
||||||
|
{
|
||||||
|
::DeleteObject(m_hBms[i]);
|
||||||
|
m_hBms[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_undoSteps = 0;
|
m_undoSteps = 0;
|
||||||
m_redoSteps = 0;
|
m_redoSteps = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue