diff --git a/src/af/ev/gtk/ev_UnixMouse.cpp b/src/af/ev/gtk/ev_UnixMouse.cpp
index af3cb2a..2ca54ec 100644
a
|
b
|
void EV_UnixMouse::mouseClick(AV_View* pView, GdkEventButton* e) |
164 | 164 | invokeMouseMethod(pView,pEM,static_cast<UT_sint32>(pView->getGraphics()->tluD(e->x)),static_cast<UT_sint32>(pView->getGraphics()->tluD(e->y))); |
165 | 165 | signal(emc|mop|emb|state, static_cast<UT_sint32>(pView->getGraphics()->tluD(e->x)),static_cast<UT_sint32>(pView->getGraphics()->tluD(e->y))); |
166 | 166 | |
167 | | if (gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN) { |
| 167 | if (gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN || getenv ("ABI_TEST_TOUCH")) { |
168 | 168 | pView->setVisualSelectionEnabled(true); |
169 | 169 | } else { |
170 | 170 | pView->setVisualSelectionEnabled(false); |
diff --git a/src/text/fmt/gtk/gtktexthandle.c b/src/text/fmt/gtk/gtktexthandle.c
index 64a37ed..766eb8b 100644
a
|
b
|
_fv_text_handle_set_relative_to (FvTextHandle *handle, |
523 | 523 | priv->windows[FV_TEXT_HANDLE_POSITION_SELECTION_START].window = |
524 | 524 | _fv_text_handle_create_window (handle, FV_TEXT_HANDLE_POSITION_SELECTION_START); |
525 | 525 | priv->windows[FV_TEXT_HANDLE_POSITION_SELECTION_END].window = |
526 | | _fv_text_handle_create_window (handle, FV_TEXT_HANDLE_POSITION_SELECTION_START); |
| 526 | _fv_text_handle_create_window (handle, FV_TEXT_HANDLE_POSITION_SELECTION_END); |
527 | 527 | priv->realized = TRUE; |
528 | 528 | } |
529 | 529 | else |
… |
… |
_fv_text_handle_set_mode (FvTextHandle *handle, |
550 | 550 | if (priv->mode == mode) |
551 | 551 | return; |
552 | 552 | |
| 553 | priv->mode = mode; |
| 554 | |
| 555 | if (mode != FV_TEXT_HANDLE_MODE_NONE) |
| 556 | _fv_text_handle_update_shape (handle, |
| 557 | priv->windows[FV_TEXT_HANDLE_POSITION_CURSOR].window, |
| 558 | FV_TEXT_HANDLE_POSITION_CURSOR); |
553 | 559 | switch (mode) |
554 | 560 | { |
555 | 561 | case FV_TEXT_HANDLE_MODE_CURSOR: |
… |
… |
_fv_text_handle_set_mode (FvTextHandle *handle, |
568 | 574 | gdk_window_hide (priv->windows[FV_TEXT_HANDLE_POSITION_SELECTION_END].window); |
569 | 575 | break; |
570 | 576 | } |
571 | | |
572 | | priv->mode = mode; |
573 | 577 | } |
574 | 578 | |
575 | 579 | FvTextHandleMode |
… |
… |
_fv_text_handle_set_visible (FvTextHandle *handle, |
645 | 649 | if (!window) |
646 | 650 | return; |
647 | 651 | |
| 652 | if (priv->windows[pos].dragged) |
| 653 | return; |
| 654 | |
648 | 655 | if (!visible) |
649 | 656 | gdk_window_hide (window); |
650 | 657 | else |
diff --git a/src/text/fmt/xp/fv_SelectionHandles.cpp b/src/text/fmt/xp/fv_SelectionHandles.cpp
index c8d538b..8c6cc4b 100644
a
|
b
|
void FV_SelectionHandles::updateSelectionEnd(UT_sint32 x, UT_sint32 y) |
107 | 107 | pos = UT_MAX (pos, left + 1); |
108 | 108 | |
109 | 109 | m_pView->selectRange(left, pos); |
| 110 | m_pView->_fixInsertionPointCoords(); |
| 111 | m_pView->ensureInsertionPointOnScreen(); |
110 | 112 | } |
111 | 113 | |
112 | 114 | void FV_SelectionHandles::updateCursor(UT_sint32 x, UT_sint32 y) |
diff --git a/src/text/fmt/xp/fv_View.cpp b/src/text/fmt/xp/fv_View.cpp
index 9e78a85..5948ebe 100644
a
|
b
|
bool FV_View::rtlPages() const |
14426 | 14426 | void |
14427 | 14427 | FV_View::selectRange( PT_DocPosition start, PT_DocPosition end ) |
14428 | 14428 | { |
| 14429 | PT_DocPosition prev_start, prev_end; |
| 14430 | |
| 14431 | prev_start = m_Selection.getSelectionLeftAnchor(); |
| 14432 | prev_end = m_Selection.getSelectionRightAnchor(); |
| 14433 | |
| 14434 | if (prev_start == start && prev_end == end) |
| 14435 | return; |
| 14436 | |
14429 | 14437 | _clearSelection(false); |
14430 | 14438 | _setPoint(start); |
14431 | 14439 | m_Selection.setSelectionLeftAnchor(start); |
14432 | 14440 | _setSelectionAnchor(); |
14433 | 14441 | setPoint(end); |
14434 | 14442 | m_Selection.setSelectionRightAnchor(end); |
14435 | | _drawSelection(); |
| 14443 | |
| 14444 | _drawBetweenPositions(MIN (prev_start, start), MAX (prev_end, end)); |
14436 | 14445 | _updateSelectionHandles(); |
14437 | 14446 | } |