Nico committed 2026-04-27 23:38:24 +02:00
commit b59d2629f5
2 files changed
+140 -33

No files matched your search

+23 -7
View File
@@ -124,11 +124,10 @@ if (typeof globalThis.browser === "undefined" && typeof chrome !== "undefined")
chrome.tabs.sendMessage(tabId, message, response => {
const err = chrome.runtime.lastError;
if (err) {
console.warn("Nazeka tabs.sendMessage warning:", err.message);
resolve(undefined);
} else {
resolve(response);
}
resolve(undefined);
} else {
resolve(response);
}
});
});
},
@@ -1928,8 +1927,25 @@ function lookup_indirect_for_tests(text)
{
let old_last_lookup = last_lookup;
last_lookup = "";
let ret = lookup_indirect(text, Date.now(), false, {alternatives_mode: 3, strict_alternatives:true, strict_epwing:true});
let ret = lookup_indirect(
text,
Date.now(),
false,
{
alternatives_mode: 3,
strict_alternatives: true,
strict_epwing: true
}
);
last_lookup = old_last_lookup;
if (!ret || !Array.isArray(ret) || ret.length === 0 || !ret[0]) {
console.warn("Nazeka test lookup returned no result for:", text, ret);
return null;
}
return ret[0].result;
}
@@ -2373,4 +2389,4 @@ async function regression_tests()
console.log("exit regression tests");
}
regression_tests();
//regression_tests();
+117 -26
View File
@@ -362,6 +362,7 @@ let last_display_x = 0;
let last_display_y = 0;
function display_div(middle, x, y)
{
console.log("Nazeka display_div called", x, y, middle);
last_display_x = x;
last_display_y = y;
let font = settings.font.trim().replace(";","").replace("}","");
@@ -376,18 +377,51 @@ function display_div(middle, x, y)
let newy = y;
let mydoc = document;
while(find_root.parent && find_root.parent != find_root && is_not_frameset(find_root))
while(find_root.parent && find_root.parent != find_root && is_not_frameset(find_root))
{
try
{
let rect = find_root.frameElement.getBoundingClientRect();
let frame_element = find_root.frameElement;
if(!frame_element)
break;
let rect = frame_element.getBoundingClientRect();
let rx = rect.x;
let ry = rect.y;
let sx1 = find_root.parent.scrollX;
let sy1 = find_root.parent.scrollY;
let sx2 = find_root.scrollX;
let sy2 = find_root.scrollY;
find_root = find_root.parent;
let parent_window = find_root.parent;
let sx1 = 0;
let sy1 = 0;
let sx2 = 0;
let sy2 = 0;
try
{
sx1 = parent_window.scrollX || 0;
sy1 = parent_window.scrollY || 0;
}
catch(err)
{
// Cross-origin parent frame. Chromium blocks access.
break;
}
try
{
sx2 = find_root.scrollX || 0;
sy2 = find_root.scrollY || 0;
}
catch(err)
{
sx2 = 0;
sy2 = 0;
}
find_root = parent_window;
newx += (rx + sx1 - sx2);
newy += (ry + sy1 - sy2);
try
{
mydoc = find_root.document;
@@ -397,18 +431,12 @@ function display_div(middle, x, y)
break;
}
}
// compensate for body being relative if it is, because our popup is absolute
let relative_body = getComputedStyle(mydoc.body).position == "relative";
if(relative_body)
catch(err)
{
let rect = mydoc.body.getBoundingClientRect();
newx -= rect.x;
newy -= rect.y;
// overcompensate for scrolling
newx -= mydoc.scrollingElement.scrollLeft;
newy -= mydoc.scrollingElement.scrollTop;
console.warn("Nazeka frame positioning warning:", err);
break;
}
}
let basewidth = Math.round(Number(settings.width));
if(settings.x_dodge != 1 && basewidth > mydoc.documentElement.getBoundingClientRect().width/2 - settings.xoffset - 5)
@@ -2034,27 +2062,90 @@ let ctrl_down = false;
function ele_data_from_point(doc, x, y)
{
let ret = doc.elementFromPoint(x, y);
while (ret && ret.tagName && ["frame", "iframe"].includes(ret.tagName.toLowerCase()))
{
let wind = ret.contentWindow;
let rect = ret.getBoundingClientRect();
let wind;
try
{
wind = ret.contentWindow;
if (!wind) break;
}
catch (err)
{
break;
}
let rect;
try
{
rect = ret.getBoundingClientRect();
}
catch (err)
{
break;
}
let rx = rect.x;
let ry = rect.y;
let sx1 = wind.parent.scrollX;
let sy1 = wind.parent.scrollY;
let sx2 = wind.scrollX;
let sy2 = wind.scrollY;
let sx1 = 0;
let sy1 = 0;
let sx2 = 0;
let sy2 = 0;
try
{
if (wind.parent && wind.parent !== wind)
{
sx1 = wind.parent.scrollX || 0;
sy1 = wind.parent.scrollY || 0;
}
}
catch (err)
{
// Cross-origin parent frame; stop descending further
break;
}
try
{
sx2 = wind.scrollX || 0;
sy2 = wind.scrollY || 0;
}
catch (err)
{
sx2 = 0;
sy2 = 0;
}
x -= rx;
y -= ry;
x += sx2;
y += sy2;
doc = wind.document;
ret = doc.elementFromPoint(x, y);
try
{
doc = wind.document;
}
catch (err)
{
break;
}
try
{
ret = doc.elementFromPoint(x, y);
}
catch (err)
{
break;
}
}
return [ret, doc, x, y];
}
let last_event_time = 0;
function update(event)
{