diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/KeyboardSignalsMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/KeyboardSignalsMixin.py index 3b253e0..eb109b0 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/KeyboardSignalsMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/KeyboardSignalsMixin.py @@ -40,18 +40,19 @@ class KeyboardSignalsMixin: self.altDown = False - if re.fullmatch(valid_fname_pat, keyname): - if not self.ctrlDown and not self.shiftDown and not self.altDown: - if not self.is_searching: - self.is_searching = True - wid, tid, self.search_view, self.search_iconview, store = self.get_current_state() - self.popup_search_files(wid, keyname) - return - - if self.ctrlDown and self.shiftDown and keyname == "t": self.trash_files() + + if re.fullmatch(valid_fname_pat, keyname): + if not self.ctrlDown and not self.shiftDown and not self.altDown: + focused_obj = self.window.get_focus() + if not self.is_searching and isinstance(focused_obj, Gtk.IconView): + self.is_searching = True + wid, tid, self.search_view, self.search_iconview, store = self.get_current_state() + self.popup_search_files(wid, keyname) + return + if self.ctrlDown and keyname == "q": self.tear_down() if (self.ctrlDown and keyname == "slash") or keyname == "home": diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py index 06db9bd..7af5088 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetMixin.py @@ -38,14 +38,22 @@ class WidgetMixin: @threaded def create_icon(self, i, view, store, dir, file): icon = view.create_icon(dir, file) - fpath = dir + "/" + file + fpath = f"{dir}/{file}" GLib.idle_add(self.update_store, (i, store, icon, view, fpath,)) # NOTE: Might need to keep an eye on this throwing invalid iters when too # many updates are happening to a folder. Example: /tmp def update_store(self, item): i, store, icon, view, fpath = item - itr = store.get_iter(i) + itr = None + + try: + itr = store.get_iter(i) + except Exception as e: + print(":Invalid Itr detected: (Potential race condition...)") + print(f"Index Requested: {i}") + print(f"Store Size: {len(store)}") + return if not icon: icon = self.get_system_thumbnail(fpath, view.SYS_ICON_WH[0])