145 Commits

Author SHA1 Message Date
David Capello
bcf6899793 Update display immediately after and undo/redo command is executed from the native macOS menu (fix #2069)
Replaced ui::kFunctionMessage with os::Event::Callback.
2019-05-27 23:53:57 -03:00
David Capello
38abac8b79 Fix crash on Windows using Manager::enqueueMessage() from non-UI thread
From time to time the app::BackupObserver::backgroundThread() will use
ui::execute_from_ui_thread() to show/hide the backup notification icon
in the StatusBar (see SwitchBackupIcon class). This
ui::execute_from_ui_thread() function enqueues a ui::FunctionMessage
calling the Manager::enqueueMessage(). The issue here is that
enqueueMessage() uses ui::is_ui_thread() to check if the thread that
wants to enqueue the message is the UI thread or other thread, and
depending on this decission the message will be directly added to
msg_queue or enqueued into concurrent_msg_queue.

The issue was that ui::is_ui_thread() was not working correctly on
Windows because GetCurrentThread() is not useful to check the current
thread with a previous call of GetCurrentThread() from other
thread (the function always return the same value, a special generic
value that identifies the current thread whatever it is).
2019-05-11 13:53:31 -03:00
David Capello
be74710067 Fix flicker issues on Windows moving the BrushPreview 2019-04-16 14:22:42 -03:00
David Capello
0f150b249d Add possibility to debug the UI garbage collection 2018-12-22 23:58:15 -03:00
David Capello
c6e321b55c Fix crash using deferDelete() rebuilding the RecentListBox items 2018-12-19 15:32:33 -03:00
David Capello
8407f05434 Remove ui::Manager::removeWidgetFromRecipients() 2018-12-15 10:08:47 -03:00
David Capello
7e638cddcc Fix keyboard shortcuts dialog items: don't create/dsetroy children widgets continuously inside KeyItem
Don't send a leave message (e.g. kMouseLeaveMessage) if the old
focused widget (mouse_widget) if an ancestor of the new focused
widget.
2018-12-13 14:47:19 -03:00
David Capello
3ccd09dd8d Replace internal macro with an inlined function 2018-12-13 11:00:22 -03:00
David Capello
06352f79e8 Add ui::IGNORE_MOUSE flag for static widgets
This avoids some MouseEnter/Leave messages between widgets that don't
need them.
2018-12-13 10:48:12 -03:00
David Capello
105d389fdc Remove list of recipients from ui::Message 2018-12-13 10:11:56 -03:00
David Capello
92330adc30 Avoid busy-waiting when a menu item is clicked
When a menu item is clicked a kExecuteMenuItemMessage is enqueued, so
the msg_queue will not be empty until we exit the menu item
callback (MenuItem::onClick()). This will prevent us to use a
os::Event::getEvent() where we can wait the OS for the event (see that
Manager::generateMessagesFromOSEvents() checks that msg_queue must be
empty to block the thread for OS events).
2018-12-12 00:40:39 -03:00
David Capello
21544bb666 Remove unused function Manager::removeMessage() 2018-12-12 00:27:54 -03:00
David Capello
53f2b4a121 Don't go to sleep if there are delayed painting messages 2018-12-12 00:26:28 -03:00
David Capello
f6a2090ed9 Fix bug losing the ui::DIRTY flag from the ui::Manager after closing a fullscreen ui::Window 2018-12-04 17:44:21 -03:00
David Capello
2ffb708be8 Move Manager::invalidateDisplayRegion() to Manager::onInvalidateRegion() 2018-12-03 23:59:42 -03:00
David Capello
9b2889ef66 Fix issue with overlays on macOS w/the new async painting (fix #1931)
Fixed regression introduced in d20436f9570302e20484b51435276dc9bad94009.
Now overlays are kept on the screen and the overlapped area is restored
just in time when we have to re-paint some widget on that area.
2018-11-15 15:42:50 -03:00
David Capello
efffde5673 Wait for OS messages when is possible
With this change we will reduce the CPU and energy consumption levels
as now we can go to sleep when there is no OS messages left and no
timers running.
2018-08-17 22:09:34 -03:00
David Capello
72fb45aede Minor change (auto& -> const auto&) 2018-08-16 20:45:14 -03:00
David Capello
5cb2d984f0 Rename she -> os 2018-08-09 12:58:43 -03:00
David Capello
f2ed45e795 Replace base::UniquePtr -> std::unique_ptr 2018-08-08 17:27:26 -03:00
David Capello
7c19744798 Add some checks in ui/manager.cpp to report messages correctly 2018-07-04 14:27:13 -03:00
David Capello
6b1c884eb5 Add code to check integrity of backups 2018-07-04 12:35:15 -03:00
David Capello
848ce5972d win8: Add support to double tap with pen
Discussion:
https://community.aseprite.org/t/surface-pro-3-file-navigation/696
2017-11-23 17:03:24 -03:00
David Capello
d748cc7582 Add DEBUG_UI_THREADS to debug functions called from a non-main thread 2017-10-26 21:38:27 -03:00
David Capello
7dc7bf09e2 Windows: fix last gray background when the main window is closed 2017-09-28 12:41:19 -03:00
David Capello
c5c964bfcd Update Skia to chrome/m62 (our aseprite-m62 branch) 2017-09-19 13:41:28 -03:00
David Capello
f223d157fd Fix crash dragging the mouse in the toolbar
If we pressed the mouse button in the toolbar and start moving the mouse
like crazy just to create/destroy the toolbar popup multiple times, it
reached a situation where the Manager's mouse_widget was equal to a
deleted widget (and mouse_widgets_list contained that widget too),
producing a crash when we tried to access it.
2017-09-04 18:10:02 -03:00
David Capello
a9c1b26db3 Fix reposition of windows when Screen/UI scaling is changed 2017-08-17 09:16:11 -03:00
David Capello
432eedcb97 Support changing theme and UI scaling w/o restart (fix #471) 2017-08-15 10:39:06 -03:00
David Capello
f4fc77e050 Add search field on palette popup 2017-05-30 15:46:54 -03:00
David Capello
2aeae2aaa7 Add messages for X1/X2 mouse buttons
Related to #598
2017-04-13 17:58:42 -03:00
David Capello
cc20f0a21e Remove Theme::paintDesktop() 2017-02-17 14:37:58 -03:00
David Capello
8fa5d2dff1 Remove the "new_windows" var from ui::Manager impl
Fix regression bug introduced in
66e9cee3e6647c764b6ff34ed089c00218ad9a91 where new opened windows
weren't painted.
2017-01-09 12:45:03 -03:00
David Capello
66e9cee3e6 Fix crash on UI tests
Generating paint messages without a she::System available.
2017-01-06 16:55:21 -03:00
David Capello
eb0f046dc7 Fix general UI delay/flickers redrawing elements
This is an old bug that makes the UI looks as "partially painted." We
have to process all logic messages first, and then generate paint
messages so we paint the latest UI state (instead of a intermediate
UI state).
2017-01-02 15:38:20 -03:00
David Capello
809a90ba3b Fix crash using focus-movement keys in strange UI state
There were some crash reports in these days on the focus movement
code. It looks like we could arrive into an invalid/strange UI state
double-clicking palette buttons and showing menus two consecutive
times. After that, pressing Tab key would crash the focus-movement
logic.
2016-12-20 16:59:07 -03:00
David Capello
d444f5b78e Minor change in Manager::processFocusMovementMessage 2016-11-21 10:37:54 -03:00
David Capello
3f1f07807b Add support to cycle RGB/HSV text fields with tab key (fix #1019)
Added a new flag in messages to know if they came from a filter or from
the original chain of recipients. To do this, we've added a new way to
process message filters: instead of pre-adding filters to the list of
message recipients, we process filters in the Manager::pumpQueue()
member function itself. (So the list of "recipients" is not modified.)
2016-11-19 00:57:58 -03:00
David Capello
d8bc90696e Rename Manager::isFocusMovementKey -> isFocusMovementMessage 2016-11-18 14:26:00 -03:00
David Capello
0703bf159c Add ui::Manager::processFocusMovementMessage() function 2016-11-18 14:22:14 -03:00
David Capello
00099390da Fix several keyboard issues deadling with special characters/dead keys
This change adds support to write text with dead keys, and assign
keyboard shortcuts to special key combinations with Unicode characters
on macOS and Windows.

Fix #1083, close #796
2016-11-17 18:07:00 -03:00
David Capello
2216db2d2c Send mouse events when a new window is displayed (fix #1221)
In this way if a new widget is displayed it will get the mouse-enter and
set-cursor messages correctly.
2016-11-14 17:23:09 -03:00
David Capello
88455ebc4b Fix compilation warnings when REPORT_EVENTS is defined 2016-11-14 17:21:37 -03:00
David Capello
f5c43267fc Add support to right-click with Ctrl+left click on OS X (fix #438)
This is only for Tabs and Entry widgets at the moment.
2016-06-29 18:52:09 -03:00
David Capello
924c2ac86a Use clip library to copy/paste text
In this way we can remove all the code related to handle clipboard text
from she and ui libraries.
2016-04-28 23:26:20 -03:00
David Capello
7b4511a5df Unify she::InputDevice and ui::PointerType 2016-04-20 22:49:03 -03:00
David Capello
a58cbfbc1c Enable eraser support for Wacom tablets on Skia/Win back-end
Related to #610
2016-04-20 22:33:10 -03:00
David Capello
8028cf64db Merge branch 'unicode-text'
# Conflicts:
#	third_party/libpng
#	third_party/zlib
2016-04-04 10:26:57 -03:00
David Capello
0605166cc6 Move clock/tick from "she" to "base" library and switch to uint64_t type 2016-03-29 16:19:23 -03:00
David Capello
0abe01c5f4 Merge she::LockedSurface/NonDisposableSurface with she::Surface 2016-03-09 11:00:17 -03:00