Show More
@@ -150,6 +150,8 b' class ConsoleWidget(Configurable, QtGui.QWidget):' | |||
|
150 | 150 | self._continuation_prompt = '> ' |
|
151 | 151 | self._continuation_prompt_html = None |
|
152 | 152 | self._executing = False |
|
153 | self._filter_drag = False | |
|
154 | self._filter_resize = False | |
|
153 | 155 | self._prompt = '' |
|
154 | 156 | self._prompt_html = None |
|
155 | 157 | self._prompt_pos = 0 |
@@ -195,8 +197,12 b' class ConsoleWidget(Configurable, QtGui.QWidget):' | |||
|
195 | 197 | return True |
|
196 | 198 | |
|
197 | 199 | # Manually adjust the scrollbars *after* a resize event is dispatched. |
|
198 | elif etype == QtCore.QEvent.Resize: | |
|
199 | QtCore.QTimer.singleShot(0, self._adjust_scrollbars) | |
|
200 | elif etype == QtCore.QEvent.Resize and not self._filter_resize: | |
|
201 | self._filter_resize = True | |
|
202 | QtGui.qApp.sendEvent(obj, event) | |
|
203 | self._adjust_scrollbars() | |
|
204 | self._filter_resize = False | |
|
205 | return True | |
|
200 | 206 | |
|
201 | 207 | # Override shortcuts for all filtered widgets. |
|
202 | 208 | elif etype == QtCore.QEvent.ShortcutOverride and \ |
@@ -205,6 +211,27 b' class ConsoleWidget(Configurable, QtGui.QWidget):' | |||
|
205 | 211 | event.key() in self._shortcuts: |
|
206 | 212 | event.accept() |
|
207 | 213 | |
|
214 | # Ensure that drags are safe. The problem is that the drag starting | |
|
215 | # logic, which determines whether the drag is a Copy or Move, is locked | |
|
216 | # down in QTextControl. If the widget is editable, which it must be if | |
|
217 | # we're not executing, the drag will be a Move. The following hack | |
|
218 | # prevents QTextControl from deleting the text by clearing the selection | |
|
219 | # when a drag leave event originating from this widget is dispatched. | |
|
220 | # The fact that we have to clear the user's selection is unfortunate, | |
|
221 | # but the alternative--trying to prevent Qt from using its hardwired | |
|
222 | # drag logic and writing our own--is worse. | |
|
223 | elif etype == QtCore.QEvent.DragEnter and \ | |
|
224 | obj == self._control.viewport() and \ | |
|
225 | event.source() == self._control.viewport(): | |
|
226 | self._filter_drag = True | |
|
227 | elif etype == QtCore.QEvent.DragLeave and \ | |
|
228 | obj == self._control.viewport() and \ | |
|
229 | self._filter_drag: | |
|
230 | cursor = self._control.textCursor() | |
|
231 | cursor.clearSelection() | |
|
232 | self._control.setTextCursor(cursor) | |
|
233 | self._filter_drag = False | |
|
234 | ||
|
208 | 235 | # Ensure that drops are safe. |
|
209 | 236 | elif etype == QtCore.QEvent.Drop and obj == self._control.viewport(): |
|
210 | 237 | cursor = self._control.cursorForPosition(event.pos()) |
General Comments 0
You need to be logged in to leave comments.
Login now