public void syncWithViewport() {

		if (!mouseDown) {

			// 1. Figure out which row in the table the viewport is currently set to (the top 
			// left corner of it).
			int row = viewportUtility.getViewportPositionAsRow();

			// 2. Now we need to figure out what bytes in the file that row corresponds to. To do
			// that, we have to figure out which chunk this row belongs to, then use the 
			// Chunk.byteMap object to get the exact start byte of the row.
			//
			// Once we have that byte value, just set the slider to be the same.
			//
			int chunkRowStart = 0;
			Iterator<Chunk> iter = model.iterator();

			while (iter.hasNext()) {
				Chunk chunk = iter.next();

				// Figure out the starting row of the next chunk. If the row we want is less than
				// that, then we know we've found the chunk that contains our row.
				chunkRowStart += chunk.linesInChunk;
				if (row < chunkRowStart) {

					// To find our exact row WITHIN the chunk, we have to do some simple math (!), 
					// then get the starting byte for that row from the byteMap.
					int rowWithinChunk = (row - (chunkRowStart - chunk.linesInChunk));
					Pair byteRange = chunk.rowToFilePositionMap.get(rowWithinChunk);
					if (byteRange != null) {
						setValue(byteRange.getStart());
					}
					break;
				}
			}
		}
	}
Updates the slider so it is in sync with the current position of the viewport. 

Note that this is only done if the mouse is NOT down; if it is, it means the user is 
moving the thumb and we should do nothing.
Ghidra/Framework/Project/src/main/java/ghidra/framework/main/logviewer/ui/FVSlider.java