Merge pull request #20355 from alalek:issue_20352

This commit is contained in:
Alexander Alekhin 2021-07-04 20:54:03 +00:00
commit 85dde8a800
2 changed files with 18 additions and 9 deletions

View File

@ -990,7 +990,7 @@ void cv::imshow( const String& winname, InputArray _img )
auto backend = getCurrentUIBackend();
if (backend)
{
auto window = backend->createWindow(winname, WINDOW_NORMAL);
auto window = backend->createWindow(winname, WINDOW_AUTOSIZE);
if (!window)
{
CV_LOG_ERROR(NULL, "OpenCV/UI: Can't create window: '" << winname << "'");

View File

@ -2123,7 +2123,7 @@ static void showSaveDialog(CvWindow& window)
SIZE sz;
int channels;
void* data;
if (icvGetBitmapData(window, sz, channels, data))
if (!icvGetBitmapData(window, sz, channels, data))
return; // nothing to save
char szFileName[MAX_PATH] = "";
@ -2206,6 +2206,7 @@ static bool handleMessage(MSG& message, int& keyCode)
switch (message.message)
{
case WM_DESTROY:
// fallthru
case WM_CHAR:
DispatchMessage(&message);
keyCode = (int)message.wParam;
@ -2221,6 +2222,20 @@ static bool handleMessage(MSG& message, int& keyCode)
break;
case WM_KEYDOWN:
// Intercept Ctrl+C for copy to clipboard
if ('C' == message.wParam && (::GetKeyState(VK_CONTROL) >> 15))
{
::SendMessage(message.hwnd, WM_COPY, 0, 0);
return false;
}
// Intercept Ctrl+S for "save as" dialog
if ('S' == message.wParam && (::GetKeyState(VK_CONTROL) >> 15))
{
showSaveDialog(window);
return false;
}
TranslateMessage(&message);
if ((message.wParam >= VK_F1 && message.wParam <= VK_F24) ||
message.wParam == VK_HOME || message.wParam == VK_END ||
@ -2235,13 +2250,7 @@ static bool handleMessage(MSG& message, int& keyCode)
return true;
}
// Intercept Ctrl+C for copy to clipboard
if ('C' == message.wParam && (::GetKeyState(VK_CONTROL) >> 15))
::SendMessage(message.hwnd, WM_COPY, 0, 0);
// Intercept Ctrl+S for "save as" dialog
if ('S' == message.wParam && (::GetKeyState(VK_CONTROL) >> 15))
showSaveDialog(window);
// fallthru
default:
DispatchMessage(&message);