Commit graph

134 commits

Author SHA1 Message Date
Hein-Pieter van Braam
fa7eac8a0d Delay emitting pressed signals in PopupMenu
When processing items we may actually delete the item we're processing
in the callback for the signal. To avoid this, call the signal after
we're done processing the items. But before hiding the popupmenu itself.

Thanks to @reduz for writing the whole solution.

This fixes #19842
2018-08-16 21:44:18 +02:00
Ovnuniarchos
9d0de7d417 PopupMenu item_pressed is sent before checking hide flags. 2018-08-16 07:22:18 +02:00
Hein-Pieter van Braam
868efb8184 Emit pressed events after processing items
When processing items we may actually delete the item we're processing
in the callback for the signal. To avoid this, call the signal after
we're done processing the items.

This fixes #19842
2018-08-13 21:55:26 +02:00
Juan Linietsky
0fcc28b6f3
Merge pull request #15269 from ianb96/context_menu_improvements
Context Menu Improvements
2018-07-29 12:31:20 -03:00
Ian
1bb13e95a8 context menu improvements 2018-07-26 08:58:35 -04:00
Hein-Pieter van Braam
0e29f7974b Reduce unnecessary COW on Vector by make writing explicit
This commit makes operator[] on Vector const and adds a write proxy to it.  From
now on writes to Vectors need to happen through the .write proxy. So for
instance:

Vector<int> vec;
vec.push_back(10);
std::cout << vec[0] << std::endl;
vec.write[0] = 20;

Failing to use the .write proxy will cause a compilation error.

In addition COWable datatypes can now embed a CowData pointer to their data.
This means that String, CharString, and VMap no longer use or derive from
Vector.

_ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug
builds. This is a lot faster for Vector in the editor and while running tests.
The reason why this difference used to exist is because force-inlined methods
used to give a bad debugging experience. After extensive testing with modern
compilers this is no longer the case.
2018-07-26 00:54:16 +02:00
Juan Linietsky
f6ce73f724 Visual Shaders are back. 2018-07-14 18:16:18 -03:00
Andrii Doroshenko (Xrayez)
e3b77b24ac Add ability to set submenu's popup delay time on mouse hovering
This allows to set delay time for the submenu to popup. Setting
this value low can increase responsiveness. If the popup menu is added
as a child of another (acting as a submenu), it will inherit the delay
time of the parent menu item.
2018-07-09 18:37:41 +03:00
Juan Linietsky
b659fd6d74 Entirely new (and much improved) animation editor. 2018-06-07 12:52:00 -03:00
Juan Linietsky
4b5227ff77 -Ability to open resources in the same window
-Plenty of fixes and improvements to new inspector
-Fixes that were needed to make inspector work better
2018-05-17 18:03:05 -03:00
Pedro J. Estébanez
b964a9e678 Add support for radio-looking items with icon
Letting users of `PopupMenu` use them. `OptionButton` was one of those interested and is updated in this commit.

Fixes #18063.
2018-04-09 19:55:54 +02:00
Juan Linietsky
187b14ae24
Merge pull request #17730 from RandomShaper/radio-buttons-in-menus
Radio buttons in menus
2018-04-07 16:41:39 -03:00
Pedro J. Estébanez
259ed1d400 Improve popup menus usability
It seems that popups were intended to "grab" the mouse click that triggered them, but their intent was being lost. This commit does the necessary changes to let it happen and updates items that were trying to get advantage of it, because the semantics of `Control::grab_click_focus()` have changed a bit. Namely, it must be called **before** showing the modal.

This allows to popup a menu and activate an item in it in a single click-point-release cycle, instead of having to click once to open the menu and once more to pick an item.

This ability is extended even to context menus activated with the RMB (or any other mouse button, for that matter). The editor benefits from this in the context menu of the tree dock, which has been patched to opt-in for this feature.

This improves UX a bit by saving unnecessary clicks.

From now on, `PopupMenu` always grabs the click and also invalidates the first button release unless the mouse has moved (that's what `set_invalidate_click_until_motion()` was doing and now it's removed), so there is no longer the need of doing both things at every point a pop-up menu is shown.
2018-04-07 01:06:02 +02:00
Pedro J. Estébanez
ab3b1d9f3e Add radio-button-looking entries to PopupMenu
They work exactly the same as current checkbox-decorated items, but in order to preserve compatibility, separate methods are used, like `add_radio_check_item()`. The other option would have been to add a new parameter at the end of `add_check_item()` and the like, but that would have forced callers to provide the defaults manually.

`is_item_checkable()`, `is_item_checked()` and `set_item_checked()` are used regardless the item is set to look as check box or radio button.

Keeping check in the name adds an additional clue about these facts.

Closes #13055.
2018-03-27 19:19:45 +02:00
Fabio Alessandrelli
ff122a7e1f Add item_focused signal to OptionButton
And id_focused to Popupmenu.
2018-02-23 13:01:28 +01:00
Fabio Alessandrelli
4a71483a65 Popupmenu now uses UI actions instead of keys 2018-02-23 12:58:16 +01:00
Bojidar Marinov
9b8e8b2220
Bind many more properties to scripts
Notable potentially breaking changes:
- PROPERTY_USAGE_NOEDITOR is now PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_NETWORK, without PROPERTY_USAGE_INTERNAL
- Some properties were renamed, and sometimes even shadowed by new ones
- New getter methods (some virtual) were added
2018-01-12 00:58:14 +02:00
Bernhard Liebl
249521670d Corrects wrong scrolling for short popups broken in 15405 2018-01-07 02:19:11 +01:00
Bernhard Liebl
3f9a7da857 Allow popup menu scrolling without mouse wheel 2018-01-06 16:21:27 +01:00
Rémi Verschelde
e4213e66b2 Add missing copyright headers and fix formatting
Using `misc/scripts/fix_headers.py` on all Godot files.
Some missing header guards were added, and the header inclusion order
was fixed in the Bullet module.
2018-01-05 01:22:23 +01:00
volzhs
f2d531bd43 Fix PopupMenu to show & detect properly hover area
Fix #15275
2018-01-05 02:37:46 +09:00
Rémi Verschelde
b50a9114b1 Update copyright statements to 2018
Happy new year to the wonderful Godot community!
2018-01-01 14:40:47 +01:00
Rémi Verschelde
1ef123c57d
Merge pull request #14748 from YeldhamDev/popupmenu_circleback
Made highlighted item in PopupMenu circle back to the beginning/end when using the keyboard
2017-12-17 20:22:50 +01:00
Michael Alexsander Silva Dias
7e38db631f More changes to PopupMenu's submenu keyboard handling. 2017-12-16 20:57:26 -02:00
Michael Alexsander Silva Dias
c19cc581ec Made highlighted item in PopupMenu circle back to the beginning/end when using the keyboard. 2017-12-16 13:54:43 -02:00
Michael Alexsander Silva Dias
dc80a29dc5 Enhancements and fixes for PopupMenu's submenus. 2017-12-15 18:30:42 -02:00
Poommetee Ketson
9888a56639 Change statable to multistate, remove extra separator 2017-12-12 09:41:17 +07:00
Rémi Verschelde
bf45e569c9
Merge pull request #11510 from AndreaCatania/skel
Added skeleton x-ray
2017-12-10 13:03:53 +01:00
AndreaCatania
63ec5823d1 Implemented skeleton visibility
Removed code visibility code from popup menu
2017-12-10 03:15:52 +01:00
Michael Alexsander Silva Dias
6629cc7a85 Fixed PopupMenu's submenus not showing up in certain situations. 2017-12-06 17:27:21 -02:00
Rémi Verschelde
bd282ff43f Use HTTPS URL for Godot's website in the headers 2017-08-27 14:16:55 +02:00
Hein-Pieter van Braam
cacced7e50 Convert Object::cast_to() to the static version
Currently we rely on some undefined behavior when Object->cast_to() gets
called with a Null pointer. This used to work fine with GCC < 6 but
newer versions of GCC remove all codepaths in which the this pointer is
Null. However, the non-static cast_to() was supposed to be null safe.

This patch makes cast_to() Null safe and removes the now redundant Null
checks where they existed.

It is explained in this article: https://www.viva64.com/en/b/0226/
2017-08-24 23:08:24 +02:00
Rémi Verschelde
18a7315381 Rename localization method to tr again
Partial revert of #10380 based on contributor ~~bullying~~ feedback.
2017-08-18 22:38:38 +02:00
Rémi Verschelde
c72529baf0 Rename XL_MESSAGE aka tr to localize
Also renames `set_message_translation` to `set_message_localization`
for consistency.
2017-08-17 18:10:22 +02:00
Ignacio Etcheverry
2f290038d6 Removes type information from method binds 2017-08-10 07:17:50 +02:00
Indah Sylvia
5ae78fdf6a Makes all Godot API's methods Lower Case 2017-08-07 18:24:35 +07:00
Bojidar Marinov
7b7c7c8dc0
Rename KEY_RETURN to KEY_ENTER and KEY_ENTER to KEY_KP_ENTER
Closes #7695
2017-08-06 16:26:07 +03:00
Poommetee Ketson
2777f81d29 Add object type hint for docs 2017-07-23 18:57:03 +07:00
Jakub Grzesik
7f31cbda4f Fix uncheckable checkboxes in RMB menu. closes #9625 2017-07-14 10:59:11 +02:00
ducdetronquito
074801e7a9 [#7212] Fixed missing 'Variant' return values in documentation. 2017-07-11 13:25:51 +02:00
Thomas Herzog
86407aebc5 Merge pull request #8407 from Jylhis/popup_item_select_hide
Update PopupMenu hiding
2017-06-20 00:20:21 +02:00
alexholly
a3c90b0293 renamed all Rect2.pos to Rect2.position 2017-06-04 02:09:17 +02:00
Andreas Haas
9bc5348961
InputEvent: Renamed "pos" property to "position"
Make the naming consistent with other classes.
2017-06-03 11:26:39 +02:00
Juan Linietsky
5b3709d309 Removal of InputEvent as built-in Variant type..
this might cause bugs I haven't found yet..
2017-05-20 17:05:38 -03:00
AlexHoratio
69359f2220 Fixed #8526, popup menu width now responds to submenu icon 2017-05-14 18:55:55 +01:00
toger5
304a1f5b5a Implemented scrolling factor for smooth trackpad scrolling
Working platforms platform: OSX, Windows.
Support for almost all ui elements, including project list.
2017-05-07 14:23:56 +02:00
Jylhis
8ccb9d13c3 Update PopupMenu hiding
Make PopupMenu hiding distinguish between checkable item and non checkable
item.
2017-04-14 15:00:38 +03:00
Sergey Pusnei
8589ca3903 Rename [gs]et_pos to [gs]et_position for Controls
Control set_pos -> set_position
Control set_global_pos -> set_global_position
[gs]et_mouse_pos -> [gs]et_mouse_position
[gs]et_global_mouse_pos -> [gs]et_global_mouse_position
fixes #8005
2017-04-10 08:27:34 +02:00
Rémi Verschelde
df61dc4b2b Add "Godot Engine contributors" copyright line 2017-04-08 00:11:42 +02:00
Rémi Verschelde
5dbf1809c6 A Whole New World (clang-format edition)
I can show you the code
Pretty, with proper whitespace
Tell me, coder, now when did
You last write readable code?

I can open your eyes
Make you see your bad indent
Force you to respect the style
The core devs agreed upon

A whole new world
A new fantastic code format
A de facto standard
With some sugar
Enforced with clang-format

A whole new world
A dazzling style we all dreamed of
And when we read it through
It's crystal clear
That now we're in a whole new world of code
2017-03-05 16:44:50 +01:00
Hein-Pieter van Braam
411ee71b4d Rename the _MD macro to D_METHOD
This new name also makes its purpose a little clearer

This is a step towards fixing #56
2017-02-13 12:50:02 +01:00
Hein-Pieter van Braam
0f687f0ccb Remove use of _SCS from ADD_METHOD
This saves typing and is a step towards fixing #56
2017-02-13 10:37:47 +01:00
Rémi Verschelde
93ab45b6b5 Style: Fix whole-line commented code
They do not play well with clang-format which aligns the `//` part
with the rest of the code block, thus producing badly indented commented code.
2017-01-14 14:52:23 +01:00
Juan Linietsky
04c749a1f0 New API for visibility in both CanvasItem and Spatial
visible (property) - access set_visible(bool) is_visible()
is_visible_in_tree() - true when visible and parents visible
show() hide() - for convenience
2017-01-13 10:45:50 -03:00
Juan Linietsky
1f8451001d -Translation text will change automatically for in-game buttons, labels, poups when translation is changed.
-Added a NOTIFICATION_TRANSLATION_CHANGED for controls that need custom code
-Sorry, editor will not update automatically because it uses a different translatio method.
2017-01-09 16:43:44 -03:00
Juan Linietsky
fa170cbc58 PopupMenu now emits both index_pressed and id_pressed instead of item_pressed, closes #3188 2017-01-08 18:18:54 -03:00
Juan Linietsky
920947f297 renamed _input_event for GUI events to _gui_input, so it's more differentiated than generalized _input 2017-01-08 16:28:12 -03:00
Juan Linietsky
0f7af4ea51 -Changed most project settings in the engine, so they have major and minor categories.
-Changed SectionedPropertyEditor to support this
-Renamed Globals singleton to GlobalConfig, makes more sense.
-Changed the logic behind persisten global settings, instead of the persist checkbox, a revert button is now available
2017-01-05 09:16:00 -03:00
Juan Linietsky
118eed485e ObjectTypeDB was renamed to ClassDB. Types are meant to be more generic to Variant.
All usages of "type" to refer to classes were renamed to "class"
ClassDB has been exposed to GDScript.
OBJ_TYPE() macro is now GDCLASS()
2017-01-02 23:03:46 -03:00
Juan Linietsky
ce26eb74bc Merge branch 'master' of https://github.com/godotengine/godot 2017-01-02 19:12:25 -03:00
Rémi Verschelde
c7bc44d5ad Welcome in 2017, dear changelog reader!
That year should bring the long-awaited OpenGL ES 3.0 compatible renderer
with state-of-the-art rendering techniques tuned to work as low as middle
end handheld devices - without compromising with the possibilities given
for higher end desktop games of course. Great times ahead for the Godot
community and the gamers that will play our games!
2017-01-01 22:03:33 +01:00
Ivan P. Skodje
da950cd0f2 PopupMenu upgrade: Hide on item selection (#7306)
* Added the option to set hide on item selection. Usable in GDScript and from within the source code when you want to specify popup menus you don't want to close immediately when selecting an item

* Renamed getter from get_ to is_, fixed parent/child behavior, renamed bool variable to match most code and added ADD_PROPERTYNO to save some memory
2016-12-23 15:43:45 +01:00
Juan Linietsky
ab4126f510 Merge branch 'master' of https://github.com/godotengine/godot 2016-10-30 09:00:45 -03:00
J08nY
6b283ae293
PopupMenu: added toggle_item_checked and exposed set_item_tooltip and get_item_tooltip 2016-10-01 16:50:53 +02:00
Juan Linietsky
8b15b26eed Click the inspected objet name to see all subresources. 2016-09-17 19:01:47 -03:00
Juan Linietsky
c1028b9011 fix for travis 2016-06-04 21:45:50 -03:00
Juan Linietsky
007efb6a20 -customizable shortcuts in editor
-editor settings now save to .tres instead of .xml
-buttons can now hold a shortcut
2016-06-04 21:31:47 -03:00
Bojidar Marinov
b7d79c93f4 Fix PopupMenu and MenuButton not activating items with shortcut inside submenus 2016-04-06 15:42:50 +03:00
Hubert Jarosz
4a4f247914
remove trailing whitespace 2016-03-09 00:00:52 +01:00
George Marques
5be9ff7b67 Update copyright to 2016 in headers 2016-01-01 11:50:53 -02:00
Rémi Verschelde
d4993b74fc Add missing argument names in GDScript bindings
All classes were reviewed apart from VisualServer for which no argument name is documented at all.
While doing this review, I found quite a few bugs that were fixed either in earlier commits or this one (mostly documentation bugs though, i.e. some arguments were listed at the wrong place).
2015-12-28 02:13:05 +01:00
Juan Linietsky
709de124c1 ability to export scene to zip 2015-12-13 01:08:36 -03:00
Juan Linietsky
9a7ff65751 make popup emit index when id is not defined 2015-12-12 09:07:43 -03:00
neikeq
9797b6374b Popup submenu position enhancement 2015-11-22 15:53:22 +01:00
Juan Linietsky
ee944e0da2 Merge pull request #2734 from neikeq/popupmenu_imp
Small PopupMenu behaviour changes
2015-11-18 18:59:56 -03:00
neikeq
ae65dfa4ec Small PopupMenu changes 2015-11-13 22:03:17 +01:00
Bojidar Marinov
bff8b04f52 Change popup_menu.cpp as proposed in #2011
Closes #2011
2015-11-13 12:16:55 +02:00
Juan Linietsky
c22b627ee3 Merge pull request #2362 from AlexHolly/update-scene-tab-fix
[UI-FIX] - Update scene tabs on save
2015-10-17 10:51:45 -03:00
firefly2442
930cb97c7d hide opened menu when click on menu button 2015-09-08 22:48:22 -05:00
Alexander Holland
cff2509ecd close all parent PopupMenus fix 2015-08-12 22:24:21 +02:00
Juan Linietsky
fdaa2920eb Updated copyright year in all headers 2015-04-18 14:38:54 -03:00
Juan Linietsky
fbdd925d9b -Work in progress visual shader editor *DOES NOT WORK YET* 2015-01-03 16:52:37 -03:00
Gerold31
6532aa627c Fix some more incorrect bindings 2014-10-26 15:07:54 +01:00
Juan Linietsky
0b806ee0fc GODOT IS OPEN SOURCE 2014-02-09 22:10:30 -03:00