diff options
-rw-r--r-- | AUTHORS.md | 4 | ||||
-rw-r--r-- | DONORS.md | 34 | ||||
-rw-r--r-- | core/array.cpp | 1 | ||||
-rw-r--r-- | drivers/coreaudio/audio_driver_coreaudio.cpp | 6 | ||||
-rw-r--r-- | drivers/coremidi/core_midi.cpp | 6 | ||||
-rw-r--r-- | editor/create_dialog.cpp | 2 | ||||
-rw-r--r-- | editor/filesystem_dock.cpp | 2 | ||||
-rw-r--r-- | platform/osx/os_osx.mm | 22 |
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 @@ -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); |