Bug #3007

URS, Ubuntu 20.04, can't open annotation bar

Added by Matthieu Decorde over 2 years ago. Updated over 2 years ago.

Status:New Start date:01/29/2021
Priority:Urgent Due date:
Assignee:- % Done:

80%

Category:Annotation Spent time: -
Target version:TXM 0.8.2

Description

The annotation bar cannot be opened when TXM 0.8.1 + URS is installed on fresh Ubuntu 20.04 machine

The error is asynchronous and some times the toolbar opens

A JS function failed with the following error message:

org.eclipse.swt.SWTException: file:///home/mdecorde/TXM-0.8.1/corpora/PAULINE/HTML/PAULINE/default/FC_NAR_EXT_18-1-Pauline_brut_PRIS_PAR_MARINE_1.html:2:26: ReferenceError: Can't find variable: txmGetSelection
Script that was evaluated:
function SWTWebkit2TempFunc25(){var all = [];
var sel = txmGetSelection();
if (sel.rangeCount == 0) {return all;}
var range = txmGetRange(sel, 0);
var frag = txmGetFragment(range);
var children = txmGetChildren(frag);
if ((children.length == 0) || (children.length == 1 && children.item(0).nodeType == 3)) {
    var parent = txmGetParentElementRange(range);
    if (typeof parent.getAttribute == 'undefined') {return all}
    var id = parent.getAttribute('id');
    if (txmGetTagName(parent) == 'SPAN' && id != null && id.indexOf('w_') == 0) {
        all.push(id);
    } else {
        var parent = txmGetParent(parent);
    if (typeof parent.getAttribute == 'undefined') {return all}
        var id = parent.getAttribute('id');
        if (txmGetTagName(parent) == 'SPAN' && id != null && id.indexOf('w_') == 0) {
            all.push(id);
        }
    }
} else {
    findSpans(children, all);
}
return all;}; SWTWebkit2TempFunc25()
    at org.eclipse.swt.browser.WebKit$Webkit2JavascriptEvaluator.evaluate(WebKit.java:1281)
    at org.eclipse.swt.browser.WebKit.evaluate(WebKit.java:1332)
    at org.eclipse.swt.browser.WebBrowser.evaluate(WebBrowser.java:409)
    at org.eclipse.swt.browser.Browser.evaluate(Browser.java:663)
    at org.eclipse.swt.browser.Browser.evaluate(Browser.java:610)
    at org.txm.edition.rcp.editors.EditionPanel.evaluate(EditionPanel.java:271)
    at org.txm.edition.rcp.editors.EditionPanel.getWordSelection(EditionPanel.java:1119)
    at org.txm.annotation.urs.toolbar.UnitToolbar.testIfAwordSpanIsSelected(UnitToolbar.java:416)
    at org.txm.annotation.urs.toolbar.UnitToolbar.install(UnitToolbar.java:251)
    at org.txm.annotation.rcp.editor.AnnotationExtension.openAnnotationMode(AnnotationExtension.java:189)
    at org.txm.annotation.rcp.editor.AnnotationExtension$2.widgetSelected(AnnotationExtension.java:100)
    at org.txm.annotation.rcp.editor.AnnotationExtension.openDefaultAnnotationMode(AnnotationExtension.java:220)
    at org.txm.annotation.rcp.editor.AnnotationExtension$3.widgetSelected(AnnotationExtension.java:127)
    at org.txm.rcp.editors.TXMEditorToolBar$2.widgetSelected(TXMEditorToolBar.java:203)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
    ...

Solution 1

Fix the JS function -> When using WEBKIT the javascript code is executed within a temporary&uniq JS function thus

function test() {...}

code alike won't be accessible afterward

Solution use the

test = function test() {...}

pattern
h3. Solution 2

backtrack to GTK2 but one must install libwebkitgtk 1.0.0 manually and its dependencies

mkdir txm_deps
cd txm_deps
wget http://ftp.de.debian.org/debian/pool/main/w/webkitgtk/libwebkitgtk-1.0-0_2.4.11-3_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/m/mesa/libegl1-mesa_18.3.6-2+deb10u1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/w/webkitgtk/libegl1-x11.deb
wget http://ftp.de.debian.org/debian/pool/main/e/enchant/libenchant1c2a_1.6.0-11.1+b1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/i/icu/libicu57_57.1-6+deb9u4_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+deb10u1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/w/webkitgtk/libjavascriptcoregtk-1.0-0_2.4.11-3_amd64.deb
sudo dpkg -i *.deb

Patch "/usr/bin/TXM-0.8.1" to run TXM with GTK2 :

At last line:
SWT_GTK3=1 ...-> SWT_GTK3= ...


Related issues

related to Bug #3075: Edition, Ubuntu 20.04, broken mouse and keybord events New 01/29/2021

Associated revisions

Revision 3081
Added by Matthieu Decorde over 2 years ago

fix EditionPanel code for webkit2 refs #3007

History

#1 Updated by Matthieu Decorde over 2 years ago

  • Description updated (diff)

#2 Updated by Matthieu Decorde over 2 years ago

  • Priority changed from High to Urgent

#3 Updated by Matthieu Decorde over 2 years ago

  • Description updated (diff)
  • % Done changed from 0 to 80

#4 Updated by Matthieu Decorde over 2 years ago

  • Tracker changed from Task to Bug

Also available in: Atom PDF