mirror of
https://git.deluge-torrent.org/deluge
synced 2025-08-03 15:08:40 +00:00
Wait at least 0.7 secs before triggering an update because of the search box, ie, allows typing the full search string before making the request.
This commit is contained in:
parent
c66637116b
commit
feed806983
1 changed files with 16 additions and 3 deletions
|
@ -46,6 +46,8 @@ import logging
|
||||||
import warnings
|
import warnings
|
||||||
from urlparse import urlparse
|
from urlparse import urlparse
|
||||||
|
|
||||||
|
from twisted.internet import reactor
|
||||||
|
|
||||||
import deluge.common
|
import deluge.common
|
||||||
import deluge.component as component
|
import deluge.component as component
|
||||||
from deluge.ui.client import client
|
from deluge.ui.client import client
|
||||||
|
@ -270,6 +272,7 @@ class TorrentView(listview.ListView, component.Component):
|
||||||
|
|
||||||
# Set filter to None for now
|
# Set filter to None for now
|
||||||
self.filter = None
|
self.filter = None
|
||||||
|
self.search_pending = None
|
||||||
|
|
||||||
### Connect Signals ###
|
### Connect Signals ###
|
||||||
# Connect to the 'button-press-event' to know when to bring up the
|
# Connect to the 'button-press-event' to know when to bring up the
|
||||||
|
@ -393,6 +396,9 @@ class TorrentView(listview.ListView, component.Component):
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
if self.got_state:
|
if self.got_state:
|
||||||
|
if self.search_pending is not None and self.search_pending.active():
|
||||||
|
# An update request is scheduled, let's wait for that one
|
||||||
|
return
|
||||||
# Send a status request
|
# Send a status request
|
||||||
gobject.idle_add(self.send_status_request)
|
gobject.idle_add(self.send_status_request)
|
||||||
|
|
||||||
|
@ -619,21 +625,28 @@ class TorrentView(listview.ListView, component.Component):
|
||||||
if icon != gtk.ENTRY_ICON_SECONDARY:
|
if icon != gtk.ENTRY_ICON_SECONDARY:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if self.search_pending and self.search_pending.active():
|
||||||
|
self.search_pending.cancel()
|
||||||
|
|
||||||
entry.set_text("")
|
entry.set_text("")
|
||||||
if self.filter and 'name' in self.filter:
|
if self.filter and 'name' in self.filter:
|
||||||
self.filter.pop('name', None)
|
self.filter.pop('name', None)
|
||||||
self.update()
|
self.search_pending = reactor.callLater(0.7, self.update)
|
||||||
|
|
||||||
def on_search_torrents_entry_changed(self, widget):
|
def on_search_torrents_entry_changed(self, widget):
|
||||||
search_string = widget.get_text().lower()
|
search_string = widget.get_text().lower()
|
||||||
|
|
||||||
|
if self.search_pending and self.search_pending.active():
|
||||||
|
self.search_pending.cancel()
|
||||||
|
|
||||||
if not search_string:
|
if not search_string:
|
||||||
if self.filter and 'name' in self.filter:
|
if self.filter and 'name' in self.filter:
|
||||||
self.filter.pop('name', None)
|
self.filter.pop('name', None)
|
||||||
self.update()
|
self.search_pending = reactor.callLater(0.7, self.update)
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.filter is None:
|
if self.filter is None:
|
||||||
self.filter = {}
|
self.filter = {}
|
||||||
|
|
||||||
self.filter['name'] = search_string
|
self.filter['name'] = search_string
|
||||||
self.update()
|
self.search_pending = reactor.callLater(0.7, self.update)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue