Release v0.6.0: screenshot notifications with previews and responsive clipboard history

This commit is contained in:
2026-10-29 00:01:04 +02:00
parent ccaa8dad3f
commit dd9629f8fd
19 changed files with 501 additions and 41 deletions
+15
View File
@@ -4,6 +4,7 @@
#include <iostream>
int main()
{
CoInitializeEx(nullptr,COINIT_APARTMENTTHREADED);
try {
INITCOMMONCONTROLSEX controls{sizeof(controls),ICC_STANDARD_CLASSES}; InitCommonControlsEx(&controls);
ks::ScreenshotHost app{GetModuleHandleW(nullptr)};
@@ -162,7 +163,21 @@ int main()
require(IsWindow(window),"Escape does not close the screenshot editor");
SendMessageW(window,WM_CLOSE,0,0);
require(!IsWindow(window),"copied screenshot closes without confirmation");
static bool published=false;
app.notify=[](const ks::Clip &) { return published; };
ks::Capture selection(app);
selection.image=std::make_unique<ks::Surface>(100,100);
PatBlt(selection.image->dc,0,0,100,100,WHITENESS);
selection.start={10,20}; selection.end={70,60};
auto overlay=CreateWindowW(cls.lpszClassName,L"Selection test",WS_POPUP,0,0,100,100,app.window,nullptr,app.instance,&selection);
ks::finishSelection(overlay,selection,[](HWND,const ks::Clip &clip)->DWORD {
auto pixels=ks::decodeImage(clip);
if(pixels.width!=60 || pixels.height!=40) throw std::runtime_error("automatic copy did not crop selection");
published=true; return 0;
});
require(published && selection.copied && !IsWindow(overlay),"selection copies before notification and closes without editor");
DestroyWindow(app.window); app.window=nullptr;
CoUninitialize();
std::cout<<"Passed screenshot editor UI integration checks\n";
} catch(const std::exception &e) { std::cerr<<e.what()<<'\n'; return 1; }
}