1
0

Make selection menu location work when parental controls are enabled (#131)

This commit is contained in:
Simon Danner
2025-12-07 02:11:17 +01:00
committed by GitHub
parent 413eb415fd
commit 1483f4fbda

View File

@@ -87,6 +87,7 @@ typedef void SelectionMenuController; // note: items are re-initialized every ti
typedef QWidget SelectionMenuView;
typedef void WebSearchMixinBase;
void (*SelectionMenuController_lookupWikipedia)(SelectionMenuController*);
void (*SelectionMenuController_onSearchInBook) (SelectionMenuController*);
void (*SelectionMenuController_lookupWeb)(SelectionMenuController*); // 14622-18838
void (*SelectionMenuController_lookupGoogle)(SelectionMenuController*); // 19086+ (replaces lookupWeb, alternative 1)
void (*SelectionMenuController_lookupBaidu)(SelectionMenuController*); // 19086+ (replaces lookupWeb, alternative 2)
@@ -149,6 +150,9 @@ static struct nh_dlsym NickelMenuDlsym[] = {
{.name = "_ZN23SelectionMenuController12lookupGoogleEv", .out = nh_symoutptr(SelectionMenuController_lookupGoogle), .desc = "selection menu injection (19086+, alt 1)", .optional = true}, //libnickel 4.31.19086 * _ZN23SelectionMenuController12lookupGoogleEv
{.name = "_ZN23SelectionMenuController11lookupBaiduEv", .out = nh_symoutptr(SelectionMenuController_lookupBaidu), .desc = "selection menu injection (19086+, alt 2)", .optional = true}, //libnickel 4.31.19086 * _ZN23SelectionMenuController11lookupBaiduEv
// selection menu injection (parental controls enabled)
{.name = "_ZN23SelectionMenuController14onSearchInBookEv", .out = nh_symoutptr(SelectionMenuController_onSearchInBook), .desc = "selection menu injection (14601+, parental controls enabled)", .optional = true}, //libnickel 4.20.14601 * _ZN23SelectionMenuController14onSearchInBookEv
// null
{0},
};
@@ -494,6 +498,7 @@ extern "C" __attribute__((visibility("default"))) void _nm_menu_hook3(SelectionM
NM_LOG("hook3: %p %p %p %s", _this, smv, mti, slot);
SelectionMenuController_addMenuItem(_this, smv, mti, slot);
// don't list the search in book one (for parental controls) here so we don't mask bugs in this logic
if (!SelectionMenuView_addMenuItem || !SelectionMenuController_lookupWikipedia || !(SelectionMenuController_lookupWeb || (SelectionMenuController_lookupGoogle && SelectionMenuController_lookupBaidu))) {
NM_LOG("could not find required SelectionMenuView and SelectionMenuController symbols for adding selection menu items");
ConfirmationDialogFactory_showOKDialog(QLatin1String("NickelMenu"), QLatin1String("Could not find required SelectionMenuView and SelectionMenuController symbols for adding selection menu items (this is a bug)."));
@@ -504,6 +509,8 @@ extern "C" __attribute__((visibility("default"))) void _nm_menu_hook3(SelectionM
nm_menu_location_t loc;
if (!strcmp(slot, "1showSearchOptions()")) //libnickel 4.20.14622 * _ZN23SelectionMenuController17showSearchOptionsEv
loc = NM_MENU_LOCATION(selection);
else if (!strcmp(slot, "1onSearchInBook()")) //libnickel 4.20.14601 * _ZN23SelectionMenuController14onSearchInBookEv
loc = NM_MENU_LOCATION(selection); // this one is shown instead if parental controls are enabled
else if (!strcmp(slot, "2lookupWeb()")) //libnickel 4.20.14622 4.30.18838 _ZN23SelectionMenuController9lookupWebEv
loc = NM_MENU_LOCATION(selection_search);
else if (!strcmp(slot, "2lookupGoogle()")) //libnickel 4.31.19086 * _ZN23SelectionMenuController12lookupGoogleEv