Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs4
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs9
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs38
3 files changed, 34 insertions, 17 deletions
diff --git a/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs
index 8430aef2c6..6d5506a553 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs
@@ -77,8 +77,8 @@ namespace MonoDevelop.Platform.Mac
popup.AddItem (b);
}
- var action = panel.RunModal ();
- if (action == 0) {
+ var action = MacSelectFileDialogHandler.RunPanel (data, panel);
+ if (!action) {
GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
return false;
}
diff --git a/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
index a7bc98391e..b170b8aa92 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
@@ -48,7 +48,8 @@ namespace MonoDevelop.Platform.Mac
NSSavePanel panel = null;
try {
- bool directoryMode = data.Action != Gtk.FileChooserAction.Open;
+ bool directoryMode = data.Action != Gtk.FileChooserAction.Open
+ && data.Action != Gtk.FileChooserAction.Save;
if (data.Action == Gtk.FileChooserAction.Save) {
panel = new NSSavePanel ();
@@ -76,7 +77,7 @@ namespace MonoDevelop.Platform.Mac
var filterLabel = new MDAlignment (new MDLabel (GettextCatalog.GetString ("Show files:")), true);
var filterBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
{ filterLabel },
- { new MDAlignment (filterPopup, true) { MinWidth = 200 } }
+ { new MDAlignment (filterPopup, true) { MinWidth = 200 } }
};
labels.Add (filterLabel);
box.Add (filterBox);
@@ -165,8 +166,8 @@ namespace MonoDevelop.Platform.Mac
};
try {
- var action = panel.RunModal ();
- if (action == 0) {
+ var action = MacSelectFileDialogHandler.RunPanel (data, panel);
+ if (!action) {
GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
return false;
}
diff --git a/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs
index 569d56443a..003e8ab626 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs
@@ -65,16 +65,15 @@ namespace MonoDevelop.Platform.Mac
}
}
- var action = panel.RunModal ();
- if (action == 0) {
+ var action = RunPanel (data, panel);
+
+ if (action) {
+ data.SelectedFiles = GetSelectedFiles (panel);
+ GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
+ } else {
GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
- return false;
}
-
- data.SelectedFiles = GetSelectedFiles (panel);
-
- GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
- return true;
+ return action;
} finally {
if (panel != null)
panel.Dispose ();
@@ -97,14 +96,19 @@ namespace MonoDevelop.Platform.Mac
internal static void SetCommonPanelProperties (SelectFileDialogData data, NSSavePanel panel)
{
+ panel.TreatsFilePackagesAsDirectories = true;
+
if (!string.IsNullOrEmpty (data.Title))
panel.Title = data.Title;
- if (!string.IsNullOrEmpty (data.InitialFileName))
- panel.NameFieldStringValue = data.InitialFileName;
+ //FIXME: 10.6 only
+ //if (!string.IsNullOrEmpty (data.InitialFileName))
+ // panel.NameFieldStringValue = data.InitialFileName;
if (!string.IsNullOrEmpty (data.CurrentFolder))
- panel.DirectoryUrl = new MonoMac.Foundation.NSUrl (data.CurrentFolder, true);
+ panel.Directory = data.CurrentFolder;
+ //FIXME: 10.6 only
+ // panel.DirectoryUrl = new NSUrl (data.CurrentFolder, true);
var openPanel = panel as NSOpenPanel;
if (openPanel != null) {
@@ -112,6 +116,18 @@ namespace MonoDevelop.Platform.Mac
}
}
+ internal static bool RunPanel (SelectFileDialogData data, NSSavePanel panel)
+ {
+ var dir = string.IsNullOrEmpty (data.CurrentFolder)? null : data.CurrentFolder;
+ var file = string.IsNullOrEmpty (data.InitialFileName)? null : data.InitialFileName;
+ if (panel is NSOpenPanel) {
+ return ((NSOpenPanel)panel).RunModal (dir, file, null) != 0;
+ } else {
+ //FIXME: deprecated on 10.6, alternatives only on 10.6
+ return panel.RunModal (dir, file) != 0;
+ }
+ }
+
static NSOpenSavePanelUrl GetFileFilter (SelectFileDialogFilter filter)
{
var globRegex = filter.Patterns == null || filter.Patterns.Count == 0?