Index: tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java	(revision 1196)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java	(revision 1197)
@@ -79,7 +79,7 @@
 
 	/** The currentpartid. */
 	protected int currentpartid = 0;
-	
+
 	/** The current Fmax value. */
 	protected int Fmax = 0;
 	/** The current Fmin value. */
@@ -90,8 +90,8 @@
 	protected Lexicon lexicon;
 	@Deprecated
 	protected boolean lexiconMode = false;
-	
-	
+
+
 	/** The current lines. */
 	protected List<Line> lines = new ArrayList<Line>();
 	/** The current number of lines. */
@@ -107,49 +107,49 @@
 	 */
 	@Parameter(key=TXMPreferences.F_MAX)
 	protected Integer pFmaxFilter;
-	
+
 	/**
 	 * Minimum frequency filter value.
 	 */
 	@Parameter(key=TXMPreferences.F_MIN)
 	protected Integer pFminFilter;
-	
+
 	/**
 	 * Number of lines to display per page.
 	 */
 	@Parameter(key=TXMPreferences.N_LINES_PER_PAGE)
 	protected Integer pNLinesPerPage;
-	
+
 	/**
 	 * The word properties to display.
 	 */
 	@Parameter(key=TXMPreferences.UNIT_PROPERTIES)
 	protected List<WordProperty> pProperties;
-	
+
 	/**
 	 * The string used to separated property values.
 	 */
 	@Parameter(key=IndexPreferences.PROPERTIES_SEPARATOR)
 	protected String pPropertiesSeparator;
-	
+
 	/**
 	 * The CQP query.
 	 */
 	@Parameter(key=TXMPreferences.QUERY)
 	protected Query pQuery;
-	
+
 	/**
 	 * The line index of the current index page.
 	 */
 	@Parameter(key=IndexPreferences.N_TOP_INDEX)
 	private Integer pTopIndex;
-	
+
 	/**
 	 * The vmax filter value parameter.
 	 */
 	@Parameter(key=TXMPreferences.V_MAX)
 	protected Integer pVmaxFilter;
-	
+
 	/**
 	 * 
 	 * @param parent
@@ -165,64 +165,66 @@
 	public Index(String parametersNodePath)	{
 		super(parametersNodePath);
 	}
-	
 
+
 	@Override
 	protected boolean _compute() throws Exception {
 
-		
-		lines.clear();
-		counts.clear();
-		currentpartid = 0;
-		nTotalTokens = 0;
+		// reset all stored data
+		if (lines != null) {
+			lines.clear();
+			counts.clear();
+			currentpartid = 0;
+			nTotalTokens = 0;
+		}
+
 		// FIXME: tests to not recompute all on fmax, vmax, etc. changes
 		// It works but the problem is the cut() method that really cut the lines rather than doing getLines() that could filtering and returns only the lines between fmin/fmax
-//		if(this.hasParameterChanged(TXMPreferences.QUERY) || this.hasParameterChanged(TXMPreferences.UNIT_PROPERTIES))	{
-		
-			if (parent instanceof MainCorpus && "[]".equals(pQuery.getQueryString()) && pProperties.size() == 1) {
-	
-				computeWithCorpusAndNoQuery(); // internally using a lexicon
-			}
-			else {
-				this.lexicon = null;
-	
-				if (parent instanceof CQPCorpus) {
-	
-					if (!scanCorpus((CQPCorpus)parent)) {
-						lines = new ArrayList<Line>();
-						return false;
-					}
-	
-					setLineCounts();
-	
-					getAllLines();
-	
-				}
-				else {
-					Log.severe("Error: Index parent is not a corpus.");
+		//		if(this.hasParameterChanged(TXMPreferences.QUERY) || this.hasParameterChanged(TXMPreferences.UNIT_PROPERTIES))	{
+
+		if (parent instanceof MainCorpus && "[]".equals(pQuery.getQueryString()) && pProperties.size() == 1) {
+			computeWithCorpusAndNoQuery(); // internally using a lexicon
+		}
+		else {
+			this.lexicon = null;
+
+			if (parent instanceof CQPCorpus) {
+
+				if (!scanCorpus((CQPCorpus)parent)) {
+					lines = new ArrayList<Line>();
 					return false;
 				}
+
+				setLineCounts();
+
+				getAllLines();
+
 			}
-	//	}
+			else {
+				Log.severe("Error: Index parent is not a corpus.");
+				return false;
+			}
+		}
+		//	}
 
 		this.filterLines();
 
 		this.subTask("Sorting...");
-		
+
 		this.sortLines(SortMode.FREQUNIT, true);
 
 		this.cut();
 
 		this.dirty = false;
 		this.pTopIndex = 0;
-		
+
 		this.subTask("Index done.");
-		
+
 		return true;
 	}
-	
-	
-	
+
+
+
 	/**
 	 * Creates a CQL query string from the specified Index lines.
 	 *
@@ -234,7 +236,7 @@
 		if (lines.size() == 0) {
 			return query;
 		}
-		
+
 		Line line = lines.get(0);
 		int nbToken = line.getUnitsProperties().get(0).size();
 		int nbProps = line.getProperties().size();
@@ -297,9 +299,9 @@
 		return queries;
 
 	}
-	
-	
-	
+
+
+
 	/**
 	 * This method alter the index first column frequencies using a table stored in the R workspace
 	 * 
@@ -332,7 +334,7 @@
 		return true;
 		//voc.toTxt(new File("/home/mdecorde/TEMP/after.tsv"), "UTF-8", "\t", "");
 	}
-	
+
 	@Override
 	public boolean canCompute() {
 		if (getCorpus() == null) {
@@ -349,30 +351,30 @@
 			Log.severe("No query set."); //$NON-NLS-1$
 			return false;
 		}
-		
+
 		return true;
 	}
 
 	@Override
 	public boolean saveParameters() {
-			
+
 		this.saveParameter(TXMPreferences.UNIT_PROPERTIES, WordProperty.propertiesToString(pProperties));
-		
+
 		if (pQuery != null) {
 			this.saveParameter(TXMPreferences.QUERY, pQuery.getQueryString());
 		}
-		
-		
+
+
 		return true;
 	}
-	
+
 	@Override
 	public boolean loadParameters() {
 		this.pProperties = (List<WordProperty>) Property.stringToProperties(getCorpus(), this.getStringParameterValue(TXMPreferences.UNIT_PROPERTIES));
 		this.pQuery = new CQLQuery(this.getStringParameterValue(TXMPreferences.QUERY));
 		return true;
 	}
-	
+
 	@Override
 	public void clean() {
 		try {
@@ -391,7 +393,7 @@
 	 */
 	private void computeWithCorpusAndNoQuery() {
 		try {
-			
+
 			//			this.query = new Query("[]"); //$NON-NLS-1$
 			//			this.props = new ArrayList<Property>();
 			//			this.props.add(property);
@@ -403,9 +405,9 @@
 			lexicon.setProperty(property);
 			lexicon.setDirty();
 			lexicon.compute(monitor);
-		
 
-		
+
+
 			this.nTotalTokens = lexicon.nbrOfToken();
 			String[] forms = lexicon.getForms();
 			int[] freqs = lexicon.getFreq();
@@ -433,7 +435,7 @@
 					}
 				}
 			}
-			
+
 		} catch (Exception e) {
 			// TODO Auto-generated catch block
 			org.txm.utils.logger.Log.printStackTrace(e);
@@ -484,7 +486,7 @@
 	 *
 	 **/
 	public void filterLines() {
-		
+
 		if (!(pFminFilter > 0 && pFmaxFilter > 0 && pFminFilter <= pFmaxFilter)) {
 			return;
 		}
@@ -537,7 +539,7 @@
 			try {
 				Object[] params = new Object[]{this.parent.getSimpleName(), this.getQuery().getQueryString(), this.getProperties(), this.getFmin(), this.getFmax()}; 
 				String str;
-					str = IndexCoreMessages.DetailsFromCorpus;
+				str = IndexCoreMessages.DetailsFromCorpus;
 				return NLS.bind(str, params);
 			}
 			catch(Exception e) {
@@ -663,7 +665,7 @@
 		return selectedLines;
 	}
 
-	
+
 	/**
 	 * return all the lines of the index.
 	 *
@@ -690,10 +692,10 @@
 			line.setCounts(c, -1);
 		}
 	}
-	
 
-	
-	
+
+
+
 	@Override
 	public String getName() {
 		try {
@@ -900,7 +902,7 @@
 
 			String signature = line.getSignature();
 
-			 // if the counts contains the signature, increment its corresponding value
+			// if the counts contains the signature, increment its corresponding value
 			if (counts.containsKey(signature)) {
 				while (counts.get(signature).size() <= currentpartid) {
 					counts.get(signature).add(0);
@@ -962,7 +964,7 @@
 	public void setQuery(CQLQuery query)	{
 		this.pQuery = query;
 	}
-	
+
 	/**
 	 * Sets the properties.
 	 * @param properties
@@ -970,7 +972,7 @@
 	public void setProperties(List<WordProperty> properties)	{
 		this.pProperties = properties;
 	}
-	
+
 	/**
 	 * Sets the property.
 	 * Clears all existing properties.
@@ -981,9 +983,9 @@
 		properties.add(property);
 		this.setProperties(properties);
 	}
-	
-	
-	
+
+
+
 	public void setParameters(CQLQuery query, List<WordProperty> props, Integer filterFmin, Integer filterFmax, Integer filterVmax, Integer nLinesPerPage) {
 		this.pQuery = query;
 		this.pProperties = props;
Index: tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java
===================================================================
--- tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 1196)
+++ tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 1197)
@@ -1401,11 +1401,14 @@
 
 	/**
 	 * return the column under the mouse pointer.
-	 *
+	 * TODO this method wont work if columns are added before the keyword column
 	 * @return the pointed column
 	 */
 	public int getPointedColumn() {
-		int x = getMousePosition().x; // + lineTableViewer.getTable().get;
+		Point p = getMousePosition();
+		if (p == null) return 0;
+		
+		int x = p.x; // + lineTableViewer.getTable().get;
 		int sumWidthColumn = 0;
 
 		sumWidthColumn += this.leftContextColumn.getWidth();
@@ -1416,11 +1419,11 @@
 		if (x < sumWidthColumn)
 			return 2;
 
-		sumWidthColumn += this.rightContextColumn.getWidth();
-		if (x < sumWidthColumn)
-			return 3;
+//		sumWidthColumn += this.rightContextColumn.getWidth();
+//		if (x < sumWidthColumn)
+			return 3; // last column
 
-		return 0;
+//		return 0;
 	}
 
 	/**
Index: tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java
===================================================================
--- tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 1196)
+++ tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 1197)
@@ -241,7 +241,7 @@
 	
 	@Override
 	public String getSimpleName() {
-		return WordCloudCoreMessages.RESULT_TYPE + " (" + this.fMin + " / " + this.maxWordsCount + ")"; //$NON-NLS-1$  //$NON-NLS-2$  //$NON-NLS-3$
+		return "Fmin=" + this.fMin + " Vmax=" + this.maxWordsCount; //$NON-NLS-1$  //$NON-NLS-2$  //$NON-NLS-3$
 	}
 
 	@Override
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java	(revision 1196)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java	(revision 1197)
@@ -418,36 +418,41 @@
 
 	public void updateAnnotationWidgetStates() {
 		if (annotationArea == null) return; // :)
+		annotationArea.getDisplay().syncExec(new Runnable() {
+			
+			@Override
+			public void run() {
+				if (addRemoveCombo.getSelectionIndex() == 0) { // add is default
 
-		if (addRemoveCombo.getSelectionIndex() == 0) { // add is default
+					if (getSelectedAnnotationType() != null) {
+						annotationValuesText.setEnabled(true);
 
-			if (getSelectedAnnotationType() != null) {
-				annotationValuesText.setEnabled(true);
+						affectAnnotationButton.setEnabled(true);
+						affectCombo.setEnabled(true);
+					} else {
+						annotationValuesText.setEnabled(false);
 
-				affectAnnotationButton.setEnabled(true);
-				affectCombo.setEnabled(true);
-			} else {
-				annotationValuesText.setEnabled(false);
+						affectAnnotationButton.setEnabled(false);
+						affectCombo.setEnabled(false);
+					}
+				} else {
+					annotationValuesText.setEnabled(false);
 
-				affectAnnotationButton.setEnabled(false);
-				affectCombo.setEnabled(false);
-			}
-		} else {
-			annotationValuesText.setEnabled(false);
+					if (getSelectedAnnotationType() != null) {
+						affectAnnotationButton.setEnabled(true);
+						affectCombo.setEnabled(true);
+					} else {
+						affectAnnotationButton.setEnabled(false);
+						affectCombo.setEnabled(false);
+					}
+				}
 
-			if (getSelectedAnnotationType() != null) {
-				affectAnnotationButton.setEnabled(true);
-				affectCombo.setEnabled(true);
-			} else {
-				affectAnnotationButton.setEnabled(false);
-				affectCombo.setEnabled(false);
+
+				if (addTypedValueLink != null) {
+					addTypedValueLink.setEnabled(getSelectedAnnotationType() != null);
+				}				
 			}
-		}
-
-
-		if (addTypedValueLink != null) {
-			addTypedValueLink.setEnabled(getSelectedAnnotationType() != null);
-		}
+		});
 	}
 
 	protected void deleteAnnotationValues(List<Match> matches, AnnotationType type, JobHandler job) {
Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.java	(revision 1196)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.java	(revision 1197)
@@ -3,11 +3,10 @@
 import java.awt.Canvas;
 import java.awt.Frame;
 import java.io.File;
+import java.util.List;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.awt.SWT_AWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
@@ -17,21 +16,16 @@
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Scale;
-import org.eclipse.swt.widgets.Text;
-import org.mihalis.opal.rangeSlider.RangeSlider;
 import org.txm.backtomedia.commands.function.TripleRangeSlider;
-import org.txm.backtomedia.preferences.BackToMediaPreferencePage;
 import org.txm.backtomedia.preferences.BackToMediaPreferences;
-import org.txm.core.preferences.TXMPreferences;
 import org.txm.utils.logger.Log;
 
-import uk.co.caprica.vlcj.binding.internal.libvlc_media_t;
 import uk.co.caprica.vlcj.discovery.NativeDiscovery;
-import uk.co.caprica.vlcj.logger.Logger;
-import uk.co.caprica.vlcj.logger.Logger.Level;
+import uk.co.caprica.vlcj.discovery.linux.DefaultLinuxNativeDiscoveryStrategy;
+import uk.co.caprica.vlcj.discovery.mac.DefaultMacNativeDiscoveryStrategy;
+import uk.co.caprica.vlcj.discovery.windows.DefaultWindowsNativeDiscoveryStrategy;
 import uk.co.caprica.vlcj.player.MediaPlayer;
 import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
-import uk.co.caprica.vlcj.player.MediaPlayerEventListener;
 import uk.co.caprica.vlcj.player.MediaPlayerFactory;
 import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
 import uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface;
@@ -39,11 +33,24 @@
 import uk.co.caprica.vlcj.player.embedded.videosurface.linux.LinuxVideoSurfaceAdapter;
 import uk.co.caprica.vlcj.player.embedded.videosurface.mac.MacVideoSurfaceAdapter;
 import uk.co.caprica.vlcj.player.embedded.videosurface.windows.WindowsVideoSurfaceAdapter;
-import uk.co.caprica.vlcj.version.LibVlcVersion;
 import vlcplayerrcp.MessagesMP;
+
 public class VLCPlayer extends Composite {
 	static {
-		if (!new NativeDiscovery().discover()) {
+		
+		NativeDiscovery nd = new NativeDiscovery(
+				new DefaultLinuxNativeDiscoveryStrategy() {
+			@Override
+		    protected void onGetDirectoryNames(List<String> directoryNames) {
+		        directoryNames.add("/usr/lib");
+		        directoryNames.add("/usr/local/lib");
+		        directoryNames.add("/snap/vlc/current/usr/lib");
+		    }
+		},
+	            new DefaultWindowsNativeDiscoveryStrategy(),
+	            new DefaultMacNativeDiscoveryStrategy());
+		
+		if (!nd.discover()) {
 			System.out.println(MessagesMP.error_native_libs);
 		} else {
 			//System.out.println("VLC native libraries found !");
Index: tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java
===================================================================
--- tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 1196)
+++ tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 1197)
@@ -472,7 +472,7 @@
 			if (i >= 0 && i < lines.size()) {
 				Line line = lines.get(i);
 				// System.out.println("line text "+line.getTextId());
-				if (line.getTextId().equals(text)) {
+				if (line.getTextId() != null && line.getTextId().equals(text)) {
 					allids.addAll(line.getKeywordIds());
 				}
 			}
