Release v0.6.2: configurable screenshot editor and DPI fixes
This commit is contained in:
+30
-12
@@ -164,18 +164,36 @@ int main()
|
||||
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");
|
||||
static bool notificationAccepted=false;
|
||||
app.notify=[](const ks::Clip &) {
|
||||
if(!published) throw std::runtime_error("notification preceded clipboard publication");
|
||||
return notificationAccepted;
|
||||
};
|
||||
for(bool autoOpen : {true,false}) for (bool accepted : {true, false}) {
|
||||
app.autoOpenEditor=autoOpen;
|
||||
published=false;
|
||||
notificationAccepted=accepted;
|
||||
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;
|
||||
});
|
||||
if(!autoOpen && accepted) {
|
||||
require(published && !IsWindow(overlay),"notification-first closes selection after successful submission");
|
||||
continue;
|
||||
}
|
||||
require(published && selection.copied && IsWindowVisible(overlay) && selection.editing,
|
||||
"selection opens editor whether notification is accepted or rejected");
|
||||
require(selection.image->width==60 && selection.image->height==40,
|
||||
"automatically opened editor contains the selected region");
|
||||
SendMessageW(overlay,WM_CLOSE,0,0);
|
||||
require(!IsWindow(overlay),"automatically copied screenshot closes without confirmation");
|
||||
}
|
||||
DestroyWindow(app.window); app.window=nullptr;
|
||||
CoUninitialize();
|
||||
std::cout<<"Passed screenshot editor UI integration checks\n";
|
||||
|
||||
Reference in New Issue
Block a user