diff --git a/extensions/desktop-icons/fileItem.js b/extensions/desktop-icons/fileItem.js index d6d43c9..5d3195f 100644 --- a/extensions/desktop-icons/fileItem.js +++ b/extensions/desktop-icons/fileItem.js @@ -65,6 +65,9 @@ var FileItem = class { this._setMetadataCancellable = null; this._queryFileInfoCancellable = null; this._isSpecial = this._fileExtra != Prefs.FileType.NONE; + this._lastClickTime = 0; + this._lastClickButton = 0; + this._clickCount = 0; this._file = file; @@ -642,7 +645,24 @@ var FileItem = class { DesktopIconsUtil.launchTerminal(this.file.get_path()); } + _updateClickState(event) { + let settings = Clutter.Settings.get_default(); + if ((event.get_button() == this._lastClickButton) && + ((event.get_time() - this._lastClickTime) < settings.double_click_time)) + this._clickCount++; + else + this._clickCount = 1; + + this._lastClickTime = event.get_time(); + this._lastClickButton = event.get_button(); + } + + _getClickCount() { + return this._clickCount; + } + _onPressButton(actor, event) { + this._updateClickState(event); let button = event.get_button(); if (button == 3) { if (!this.isSelected) @@ -661,7 +681,7 @@ var FileItem = class { this._actionTrash.setSensitive(!specialFilesSelected); return Clutter.EVENT_STOP; } else if (button == 1) { - if (event.get_click_count() == 1) { + if (this._getClickCount() == 1) { let [x, y] = event.get_coords(); this._primaryButtonPressed = true; this._buttonPressInitialX = x; @@ -710,12 +730,12 @@ var FileItem = class { this._primaryButtonPressed = false; let shiftPressed = !!(event.get_state() & Clutter.ModifierType.SHIFT_MASK); let controlPressed = !!(event.get_state() & Clutter.ModifierType.CONTROL_MASK); - if ((event.get_click_count() == 1) && Prefs.CLICK_POLICY_SINGLE && !shiftPressed && !controlPressed) + if ((this._getClickCount() == 1) && Prefs.CLICK_POLICY_SINGLE && !shiftPressed && !controlPressed) this.doOpen(); this.emit('selected', shiftPressed || controlPressed, false, true); return Clutter.EVENT_STOP; } - if ((event.get_click_count() == 2) && (!Prefs.CLICK_POLICY_SINGLE)) + if ((this._getClickCount() == 2) && (!Prefs.CLICK_POLICY_SINGLE)) this.doOpen(); } return Clutter.EVENT_PROPAGATE;