Index: uspace/lib/ui/src/entry.c
===================================================================
--- uspace/lib/ui/src/entry.c	(revision 282c86d6f46826e1954a2f8499e2b2074a860618)
+++ uspace/lib/ui/src/entry.c	(revision 82570ff5faaff23ad6167454f598c240d2c94549)
@@ -733,4 +733,20 @@
 	}
 
+	/*
+	 * Need to keep track if any shift is held for the case
+	 * of selecting by shift-click. This could be simplified
+	 * if position events were decorated with modifier
+	 * state.
+	 */
+
+	if (event->type == KEY_PRESS && event->key == KC_LSHIFT)
+		entry->lshift_held = true;
+	if (event->type == KEY_RELEASE && event->key == KC_LSHIFT)
+		entry->lshift_held = false;
+	if (event->type == KEY_PRESS && event->key == KC_RSHIFT)
+		entry->rshift_held = true;
+	if (event->type == KEY_RELEASE && event->key == KC_RSHIFT)
+		entry->rshift_held = false;
+
 	if (event->type == KEY_PRESS &&
 	    (event->mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0)
@@ -800,5 +816,9 @@
 			entry->held = true;
 			entry->pos = ui_entry_find_pos(entry, &pos);
-			entry->sel_start = entry->pos;
+
+			/* Clear selection if no shift key is held */
+			if (!entry->lshift_held && !entry->rshift_held)
+				entry->sel_start = entry->pos;
+
 			if (entry->active)
 				ui_entry_paint(entry);
