Skip to content

Commit d77da8d

Browse files
committed
Merge from 4.x: PR spyder-ide#12886
Fixes spyder-ide#3291
2 parents 40e3c2a + 95575a1 commit d77da8d

1 file changed

Lines changed: 29 additions & 7 deletions

File tree

spyder/plugins/editor/plugin.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
# Third party imports
2323
from qtpy.compat import from_qvariant, getopenfilenames, to_qvariant
24-
from qtpy.QtCore import QByteArray, Qt, Signal, Slot
24+
from qtpy.QtCore import QByteArray, Qt, Signal, Slot, QDir
2525
from qtpy.QtPrintSupport import QAbstractPrintDialog, QPrintDialog, QPrinter
2626
from qtpy.QtWidgets import (QAction, QActionGroup, QApplication, QDialog,
2727
QFileDialog, QInputDialog, QMenu, QSplitter,
@@ -1916,27 +1916,49 @@ def load(self, filenames=None, goto=None, word='',
19161916
c_fname = self.get_current_filename()
19171917
if c_fname is not None and c_fname != self.TEMPFILE_PATH:
19181918
basedir = osp.dirname(c_fname)
1919+
19191920
self.redirect_stdio.emit(False)
19201921
parent_widget = self.get_current_editorstack()
19211922
if filename0 is not None:
19221923
selectedfilter = get_filter(self.edit_filetypes,
19231924
osp.splitext(filename0)[1])
19241925
else:
19251926
selectedfilter = ''
1927+
19261928
if not running_under_pytest():
1927-
filenames, _sf = getopenfilenames(
1928-
parent_widget,
1929-
_("Open file"), basedir,
1930-
self.edit_filters,
1931-
selectedfilter=selectedfilter,
1932-
options=QFileDialog.HideNameFilterDetails)
1929+
# See: spyder-ide/spyder#3291
1930+
if sys.platform == 'darwin':
1931+
dialog = QFileDialog(
1932+
parent=parent_widget,
1933+
caption=_("Open file"),
1934+
directory=basedir,
1935+
)
1936+
dialog.setNameFilters(self.edit_filters.split(';;'))
1937+
dialog.setOption(QFileDialog.HideNameFilterDetails, True)
1938+
dialog.setFilter(QDir.AllDirs | QDir.Files | QDir.Drives
1939+
| QDir.Hidden)
1940+
dialog.setFileMode(QFileDialog.ExistingFiles)
1941+
1942+
if dialog.exec_():
1943+
filenames = dialog.selectedFiles()
1944+
else:
1945+
filenames, _sf = getopenfilenames(
1946+
parent_widget,
1947+
_("Open file"),
1948+
basedir,
1949+
self.edit_filters,
1950+
selectedfilter=selectedfilter,
1951+
options=QFileDialog.HideNameFilterDetails,
1952+
)
19331953
else:
19341954
# Use a Qt (i.e. scriptable) dialog for pytest
19351955
dialog = QFileDialog(parent_widget, _("Open file"),
19361956
options=QFileDialog.DontUseNativeDialog)
19371957
if dialog.exec_():
19381958
filenames = dialog.selectedFiles()
1959+
19391960
self.redirect_stdio.emit(True)
1961+
19401962
if filenames:
19411963
filenames = [osp.normpath(fname) for fname in filenames]
19421964
else:

0 commit comments

Comments
 (0)