MCPcopy Create free account
hub / github.com/ModOrganizer2/modorganizer / invoke

Method invoke

src/envshell.cpp:456–487  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

454}
455
456void ShellMenu::invoke(const QPoint& p, int cmd)
457{
458 const auto hwnd = getHWND(m_mw);
459
460 CMINVOKECOMMANDINFOEX info = {};
461
462 info.cbSize = sizeof(info);
463 info.fMask = CMIC_MASK_UNICODE | CMIC_MASK_PTINVOKE;
464 info.hwnd = hwnd;
465 info.lpVerb = MAKEINTRESOURCEA(cmd);
466 info.lpVerbW = MAKEINTRESOURCEW(cmd);
467 info.nShow = SW_SHOWNORMAL;
468 info.ptInvoke = {p.x(), p.y()};
469
470 // note: this calls the query version because the Qt even loop hasn't run
471 // yet and shift is still considered pressed
472 const auto m = QApplication::queryKeyboardModifiers();
473
474 if (m & Qt::ShiftModifier) {
475 info.fMask |= CMIC_MASK_SHIFT_DOWN;
476 }
477
478 if (m & Qt::ControlModifier) {
479 info.fMask |= CMIC_MASK_CONTROL_DOWN;
480 }
481
482 const auto r = m_cm->InvokeCommand((CMINVOKECOMMANDINFO*)&info);
483
484 if (FAILED(r)) {
485 throw MenuFailed(r, std::format("InvokeCommand failed, verb={}", cmd));
486 }
487}
488
489ShellMenuCollection::ShellMenuCollection(QMainWindow* mw) : m_mw(mw), m_active(nullptr)
490{}

Callers 1

execMethod · 0.80

Calls 2

getHWNDFunction · 0.85
MenuFailedClass · 0.85

Tested by

no test coverage detected