Index: base/applications/mspaint_new/winproc.cpp =================================================================== --- base/applications/mspaint_new/winproc.cpp (revision 68302) +++ base/applications/mspaint_new/winproc.cpp (working copy) @@ -785,12 +785,28 @@ SendMessage(hwnd, WM_COMMAND, IDM_EDITDELETESELECTION, 0); break; case IDM_EDITPASTE: - OpenClipboard(hMainWnd); - if (GetClipboardData(CF_BITMAP) != NULL) + if(OpenClipboard(hMainWnd)) { - InsertSelectionFromHBITMAP((HBITMAP) GetClipboardData(CF_BITMAP), hwnd); + HBITMAP bmClip = (HBITMAP)GetClipboardData(CF_BITMAP); + if (bmClip != NULL) + { + int bmWidth = GetDIBWidth(bmClip); + int bmHeight = GetDIBHeight(bmClip); + + if(bmWidth > imgXRes) + imgXRes = bmWidth; + + if(bmHeight > imgYRes) + imgYRes = bmHeight; + + insertReversible((HBITMAP)CopyImage(hBms[currInd], IMAGE_BITMAP, + imgXRes, + imgYRes, 0)); + updateCanvasAndScrollbars(); + InsertSelectionFromHBITMAP(bmClip, hwnd); + } + CloseClipboard(); } - CloseClipboard(); break; case IDM_EDITDELETESELECTION: { @@ -831,6 +847,19 @@ LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM); if (bmNew != NULL) { + int bmWidth = GetDIBWidth(bmNew); + int bmHeight = GetDIBHeight(bmNew); + + if(bmWidth > imgXRes) + imgXRes = bmWidth; + + if(bmHeight > imgYRes) + imgYRes = bmHeight; + + insertReversible((HBITMAP)CopyImage(hBms[currInd], IMAGE_BITMAP, + imgXRes, + imgYRes, 0)); + updateCanvasAndScrollbars(); InsertSelectionFromHBITMAP(bmNew, hwnd); DeleteObject(bmNew); }