summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS.md4
-rw-r--r--DONORS.md34
-rw-r--r--core/array.cpp1
-rw-r--r--drivers/coreaudio/audio_driver_coreaudio.cpp6
-rw-r--r--drivers/coremidi/core_midi.cpp6
-rw-r--r--editor/create_dialog.cpp2
-rw-r--r--editor/filesystem_dock.cpp2
-rw-r--r--platform/osx/os_osx.mm22
8 files changed, 42 insertions, 35 deletions
diff --git a/AUTHORS.md b/AUTHORS.md
index 9666145582..13a67ce3f5 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -45,9 +45,11 @@ name is available.
Bojidar Marinov (bojidar-bg)
bruvzg
Carl Olsson (not-surt)
+ Chris Bradfield (cbscribe)
Dana Olson (adolson)
Daniel J. Ramirez (djrm)
Dmitry Koteroff (Krakean)
+ DualMatrix
Emmanuel Leblond (touilleMan)
Eric Lasota (elasota)
est31
@@ -111,9 +113,9 @@ name is available.
Ramesh Ravone (RameshRavone)
Ray Koopa (RayKoopa)
Rémi Verschelde (akien-mga)
+ Rhody Lugo (rraallvv)
Roberto F. Arroyo (robfram)
romulox-x
- rraallvv
Ruslan Mustakov (endragor)
Saniko (sanikoyes)
SaracenOne
diff --git a/DONORS.md b/DONORS.md
index 41d24c5fbb..6fdb02e3fa 100644
--- a/DONORS.md
+++ b/DONORS.md
@@ -21,40 +21,43 @@ generous deed immortalized in the next stable release of Godot Engine.
## Mini sponsors
+ Andrew Dunai
Brandon Lamb
Christian Uldall Pedersen
Christopher Igoe
Christoph Woinke
GameDev.net
Hein-Pieter van Braam
+ iDev.Network Studios
Jamal Alyafei
Jay Sistar
+ Leona Eden
Matthieu Huvé
Mike King
Nathan Warden
Neal Gompa (Conan Kudo)
Pascal Julien
Patrick Aarstad
- rottis
Ruslan Mustakov
Slobodan Milnovic
Stephan Lanfermann
Stoney Meyerhoeffer
+ thechris
Thomas Mathews
VilliHaukka
## Gold donors
- 3Dexplorer
Asdf
cheese65536
K9Kraken
- Kris Michael
Manuele Finocchiaro
Nathanael Beisiegel
Officine Pixel S.n.c.
+ Retro Village
Zaven Muradyan
+ 13MHz
Allen Schade
Andreas Schüle
Austen McRae
@@ -62,12 +65,14 @@ generous deed immortalized in the next stable release of Godot Engine.
David Gehrig
Florian Breisch
Gary Oberbrunner
+ Jay Horton
Johannes Wuensch
Josep G. Camarasa
Joshua Lesperance
Krzysztof Dluzniewski
Kyle Szklenski
Mohammad Taleb
+ Moonwards
Paul LaMotte
Ranoller
Sergey
@@ -91,7 +96,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Rami
Robert Willes
Robin Arys
- Rodrigo Loli
Ronnie Ashlock
ScottMakesGames
Thomas Bjarnelöf
@@ -102,8 +106,8 @@ generous deed immortalized in the next stable release of Godot Engine.
Alessandra Pereyra
Alexey Dyadchenko
Amanda Haldy
- Anthony Ryan
Branwen Danielle Zakariasen
+ Chau Siu Hung
Chris Brown
Chris Petrich
Cody Parker
@@ -112,15 +116,16 @@ generous deed immortalized in the next stable release of Godot Engine.
E.G.
Eric
Eric Monson
+ Ethan Bennis
Fidget Sinner
flesk
G Barnes
+ Gero
GGGames.org
Giovanni Solimeno
Guilherme Felipe de C. G. da Silva
Hasen Judy
Heath Hayes
- Jay Horton
Jeppe Zapp
joe513
Juraj Móza
@@ -130,10 +135,8 @@ generous deed immortalized in the next stable release of Godot Engine.
Markus Wiesner
Marvin
Nahuel Sacchetti
- Neal Barry
Nick Nikitin
Pablo Cholaky
- Patrick Schnorbus
Pete Goodwin
ray-tracer
Ruben Soares Luis
@@ -141,10 +144,9 @@ generous deed immortalized in the next stable release of Godot Engine.
Sindre Sømme
Sofox
Stoned Xander
- Tim Dalporto
Trent McPheron
- Wilfrid ARNOLD
WytRabbit
+ Zachariah Gibbons
## Silver donors
@@ -177,7 +179,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Christian Baune
Christian Winter
Christopher Schmitt
- Chris Wilson
Collin Shooltz
Daniel Johnson
Daniel Kaplan
@@ -187,16 +188,14 @@ generous deed immortalized in the next stable release of Godot Engine.
David May
Disktra
Dominik Wetzel
- dRez Games
Duy Kevin Nguyen
Edward Herbert
Elias Nykrem
Eric Martini
Eugenio Hugo Salgüero Jáñez
- Extarys
Fabian Becker
fengjiongmax
- Francesco Lisi
+ Foomf
G3Dev sàrl
Gerrit Großkopf
Gilberto K. Otubo
@@ -207,7 +206,6 @@ generous deed immortalized in the next stable release of Godot Engine.
ialex32x
Jahn Johansen
Jaime Ruiz-Borau Vizárraga
- Jed
Jeff Hungerford
Joel Fivat
Johan Lindberg
@@ -237,7 +235,6 @@ generous deed immortalized in the next stable release of Godot Engine.
magodev
Manolis Makris
Martin Eigel
- Martins Odabi
Max R.R. Collada
Maxwell
Mertcan Mermerkaya
@@ -256,14 +253,15 @@ generous deed immortalized in the next stable release of Godot Engine.
Nicolas SAN AGUSTIN
Niko Leopold
Noi Sek
- Pablo Seibelt
Pan Ip
Pascal Grüter
Pat LaBine
Patrick Nafarrete
Paul E Hansen
+ Paul Gieske
Paul Mason
Paweł Kowal
+ Phillip Ryals
Pierre-Igor Berthet
Pietro Vertechi
Piotr Kaczmarski
@@ -287,9 +285,11 @@ generous deed immortalized in the next stable release of Godot Engine.
Tim
Tom Larrow
Tristan Crawford
+ Tryggve Sollid
Trym Nilsen
Tyler Stafos
UltyX
+ Vaiktorg
Victor
Viktor Ferenczi
waka nya
diff --git a/core/array.cpp b/core/array.cpp
index 9708452850..9f09ddbe15 100644
--- a/core/array.cpp
+++ b/core/array.cpp
@@ -258,6 +258,7 @@ struct _ArrayVariantSortCustom {
Array &Array::sort_custom(Object *p_obj, const StringName &p_function) {
ERR_FAIL_NULL_V(p_obj, *this);
+ ERR_FAIL_COND_V(!p_obj->has_method(p_function), *this);
SortArray<Variant, _ArrayVariantSortCustom, true> avs;
avs.compare.obj = p_obj;
diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp
index 09e50e4aaa..cf8fb08f76 100644
--- a/drivers/coreaudio/audio_driver_coreaudio.cpp
+++ b/drivers/coreaudio/audio_driver_coreaudio.cpp
@@ -277,7 +277,7 @@ OSStatus AudioDriverCoreAudio::input_callback(void *inRefCon,
}
}
} else {
- ERR_PRINT(("AudioUnitRender failed, code: " + itos(result)).utf8().get_data());
+ ERR_PRINTS("AudioUnitRender failed, code: " + itos(result));
}
ad->unlock();
@@ -289,7 +289,7 @@ void AudioDriverCoreAudio::start() {
if (!active) {
OSStatus result = AudioOutputUnitStart(audio_unit);
if (result != noErr) {
- ERR_PRINT(("AudioOutputUnitStart failed, code: " + itos(result)).utf8().get_data());
+ ERR_PRINTS("AudioOutputUnitStart failed, code: " + itos(result));
} else {
active = true;
}
@@ -300,7 +300,7 @@ void AudioDriverCoreAudio::stop() {
if (active) {
OSStatus result = AudioOutputUnitStop(audio_unit);
if (result != noErr) {
- ERR_PRINT(("AudioOutputUnitStop failed, code: " + itos(result)).utf8().get_data());
+ ERR_PRINTS("AudioOutputUnitStop failed, code: " + itos(result));
} else {
active = false;
}
diff --git a/drivers/coremidi/core_midi.cpp b/drivers/coremidi/core_midi.cpp
index e8106c4543..2ebbabaa38 100644
--- a/drivers/coremidi/core_midi.cpp
+++ b/drivers/coremidi/core_midi.cpp
@@ -51,13 +51,13 @@ Error MIDIDriverCoreMidi::open() {
OSStatus result = MIDIClientCreate(name, NULL, NULL, &client);
CFRelease(name);
if (result != noErr) {
- ERR_PRINTS("MIDIClientCreate failed: " + String(GetMacOSStatusErrorString(result)));
+ ERR_PRINTS("MIDIClientCreate failed, code: " + itos(result));
return ERR_CANT_OPEN;
}
result = MIDIInputPortCreate(client, CFSTR("Godot Input"), MIDIDriverCoreMidi::read, (void *)this, &port_in);
if (result != noErr) {
- ERR_PRINTS("MIDIInputPortCreate failed: " + String(GetMacOSStatusErrorString(result)));
+ ERR_PRINTS("MIDIInputPortCreate failed, code: " + itos(result));
return ERR_CANT_OPEN;
}
@@ -65,7 +65,7 @@ Error MIDIDriverCoreMidi::open() {
for (int i = 0; i < sources; i++) {
MIDIEndpointRef source = MIDIGetSource(i);
- if (source != NULL) {
+ if (source) {
MIDIPortConnectSource(port_in, source, (void *)this);
connected_sources.insert(i, source);
}
diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp
index eb11aea9cc..c4516c1f17 100644
--- a/editor/create_dialog.cpp
+++ b/editor/create_dialog.cpp
@@ -558,6 +558,7 @@ void CreateDialog::_history_selected() {
return;
search_box->set_text(item->get_text(0).get_slicec(' ', 0));
+ favorites->deselect_all();
_update_search();
}
@@ -568,6 +569,7 @@ void CreateDialog::_favorite_selected() {
return;
search_box->set_text(item->get_text(0).get_slicec(' ', 0));
+ recent->deselect_all();
_update_search();
}
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 2c69909f23..4d386c1af6 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -1953,7 +1953,7 @@ void FileSystemDock::_get_drag_target_folder(String &target, bool &target_favori
}
String ltarget = files->get_item_metadata(pos);
- target = ltarget.ends_with("/") ? ltarget : path;
+ target = ltarget.ends_with("/") ? ltarget : path.get_base_dir();
return;
}
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index 1c693c9ea8..6ab433203f 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -1859,28 +1859,30 @@ bool OS_OSX::can_draw() const {
void OS_OSX::set_clipboard(const String &p_text) {
- NSArray *types = [NSArray arrayWithObjects:NSStringPboardType, nil];
+ NSString *copiedString = [NSString stringWithUTF8String:p_text.utf8().get_data()];
+ NSArray *copiedStringArray = [NSArray arrayWithObject:copiedString];
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
- [pasteboard declareTypes:types owner:nil];
- [pasteboard setString:[NSString stringWithUTF8String:p_text.utf8().get_data()]
- forType:NSStringPboardType];
+ [pasteboard clearContents];
+ [pasteboard writeObjects:copiedStringArray];
}
String OS_OSX::get_clipboard() const {
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
+ NSArray *classArray = [NSArray arrayWithObject:[NSString class]];
+ NSDictionary *options = [NSDictionary dictionary];
- if (![[pasteboard types] containsObject:NSStringPboardType]) {
- return "";
- }
+ BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options];
- NSString *object = [pasteboard stringForType:NSStringPboardType];
- if (!object) {
+ if (!ok) {
return "";
}
- char *utfs = strdup([object UTF8String]);
+ NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options];
+ NSString *string = [objectsToPaste objectAtIndex:0];
+
+ char *utfs = strdup([string UTF8String]);
String ret;
ret.parse_utf8(utfs);
free(utfs);