diff --git a/gnome-shell.doap b/gnome-shell.doap index f16448cf7..9b2b5bf50 100644 --- a/gnome-shell.doap +++ b/gnome-shell.doap @@ -33,7 +33,7 @@ Colin Walters - cwalters + walters diff --git a/js/ui/altTab.js b/js/ui/altTab.js index a8d3e79ea..85846cb66 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -946,6 +946,8 @@ AppSwitcher.prototype = { this._mouseTimeOutId = Mainloop.timeout_add(APP_ICON_HOVER_TIMEOUT, Lang.bind(this, function () { this._enterItem(index); + this._mouseTimeOutId = 0; + return false; })); } else this._itemEntered(index); diff --git a/js/ui/overview.js b/js/ui/overview.js index 8f4e830fa..513d93baf 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -276,6 +276,8 @@ Overview.prototype = { _onCapturedEvent: function(actor, event) { let stageX, stageY; + let threshold = Gtk.Settings.get_default().gtk_dnd_drag_threshold; + switch(event.type()) { case Clutter.EventType.BUTTON_RELEASE: [stageX, stageY] = event.get_coords(); @@ -324,16 +326,16 @@ Overview.prototype = { newValue += difference; } + let result; + // See if the user has moved the mouse enough to trigger // a drag - let threshold = Gtk.Settings.get_default().gtk_dnd_drag_threshold; if (Math.abs(stageX - this._dragStartX) < threshold && Math.abs(stageY - this._dragStartY) < threshold) { // no motion? It's a click! - this.emit('swipe-scroll-end', SwipeScrollResult.CLICK); + result = SwipeScrollResult.CLICK; + this.emit('swipe-scroll-end', result); } else { - let result; - if (newValue == this._dragStartValue) result = SwipeScrollResult.CANCEL; else @@ -362,7 +364,7 @@ Overview.prototype = { global.stage.disconnect(this._capturedEventId); this._capturedEventId = 0; - return true; + return result != SwipeScrollResult.CLICK; case Clutter.EventType.MOTION: [stageX, stageY] = event.get_coords(); @@ -370,6 +372,16 @@ Overview.prototype = { let dy = this._dragY - stageY; let primary = global.get_primary_monitor(); + this._dragX = stageX; + this._dragY = stageY; + this._lastMotionTime = event.get_time(); + + // See if the user has moved the mouse enough to trigger + // a drag + if (Math.abs(stageX - this._dragStartX) < threshold && + Math.abs(stageY - this._dragStartY) < threshold) + return true; + if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) { if (St.Widget.get_default_direction() == St.TextDirection.RTL) this._scrollAdjustment.value -= (dx / primary.width) * this._scrollAdjustment.page_size; @@ -379,10 +391,6 @@ Overview.prototype = { this._scrollAdjustment.value += (dy / primary.height) * this._scrollAdjustment.page_size; } - this._dragX = stageX; - this._dragY = stageY; - this._lastMotionTime = event.get_time(); - return true; // Block enter/leave events to avoid prelights diff --git a/src/shell-recorder.c b/src/shell-recorder.c index a1c626b41..6f3a6ea37 100644 --- a/src/shell-recorder.c +++ b/src/shell-recorder.c @@ -412,6 +412,8 @@ recorder_fetch_cursor_image (ShellRecorder *recorder) for (i = 0; i < cursor_image->height; i++) for (j = 0; j < cursor_image->width; j++) *(guint32 *)(data + i * stride + 4 * j) = cursor_image->pixels[i * cursor_image->width + j]; + + cairo_surface_mark_dirty (recorder->cursor_image); } /* Overlay the cursor image on the frame. We draw the cursor image