137 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
54883012bb Put "Reopen Closed File" and "Clear Recent Files" options inside "File > Open Recent" menu 2019-05-27 23:53:57 -03:00
David Capello
951fb7c357 Fix invalid scroll on ui::View after changing required size of attached widget (regressiong introduced in b4eb7a0ccda38b91bd8fd253e54718c3a18d81b6) 2019-04-30 13:51:41 -03:00
David Capello
b6d9156013 Add support to drag and drop recent file items
The items are still not persisted/synchronized with the .ini file.
2018-12-21 12:22:25 -03:00
David Capello
105d389fdc Remove list of recipients from ui::Message 2018-12-13 10:11:56 -03:00
David Capello
0a179acc90 Minor change in Widget::invalidate*() funcs to use onInvalidateRegion() 2018-12-04 17:32:01 -03:00
David Capello
4790e3845a Fix regression introduced in 767897d6650cf5ea625611569d6123715d599d0d
In some cases we have to enable the DIRTY flag in the hierarchy.
Reproducible case: right-click a tab with an image, open in a folder,
then right-click the tab again.
2018-12-04 12:54:40 -03:00
David Capello
e3dc8fa3a6 Minor change 2018-12-04 12:51:56 -03:00
David Capello
2ffb708be8 Move Manager::invalidateDisplayRegion() to Manager::onInvalidateRegion() 2018-12-03 23:59:42 -03:00
David Capello
767897d665 Set DIRTY flag on Widgets without going to all parents 2018-12-03 22:16:00 -03:00
David Capello
4487c3d35f Check that we're calling the Widget::invalidate() from the ui thread 2018-10-25 17:29:07 -03:00
David Capello
5cb2d984f0 Rename she -> os 2018-08-09 12:58:43 -03:00
David Capello
6b1c884eb5 Add code to check integrity of backups 2018-07-04 12:35:15 -03:00
David Capello
f595ceea7f Add possibility to write math expression in number textboxes (fix #1762) 2018-06-28 13:33:13 -03:00
David Capello
7a35eb26a1 Add new pref="" attribute to <check> widgets to bind check boxes with bool preference options automatically
With this change we've moved the propagateToChildren/propagateToParent
flags from ui::KeyMessage to ui::Message so anykind of
message (e.g. user defined messages like kSavePreferencesMessage) can
use these flags (processed by ui::Widget::onProcessMessage()).
2018-06-06 16:35:02 -03:00
yuxshao
afdb6d22db Stop mnemonic processing from truncating multibyte characters (#1661) 2018-02-22 11:50:03 -03:00
David Capello
9520dee00a Avoid random crashes changing Color Mode with a TTF font in the theme
This is a weird combination of things:
1. StatusBar::onPixelFormatChanged() is being called in a non-UI thread
   because ChangePixelFormatCommand changes the color mode from a
   Job (background thread).
2. The UI layer is not prepared to work on multithreading, so all UI
   stuff should be used in the main UI thread (anyway, generally, the UI
   layer doesn't crash if it's used by multiple threads).
3. The harfbuzz library (used for TTF fonts) crashes if it is used by
   multiple threads, so that was the trigger of this crash.
2017-12-13 17:11:53 -03:00
David Capello
2ccbf44a55 Fix crosshair glitches on Editor when brush size popup is open 2017-12-05 13:31:34 -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
f07359d71c Minor TODO item on Widget::setBoundsQuietly() for the future 2017-11-03 09:35:00 -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
2bee243c39 Replace INT_MAX with std::numeric_limits<int>::max() 2017-08-15 11:25:23 -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
147f36077b Timeline: Redraw only marching ants on timer tick (fix #1537) 2017-07-18 17:07:35 -03:00
David Capello
bc01f16a4e Move painting code for checkbox & radio button to theme styles 2017-03-17 15:43:42 -03:00
David Capello
81bcc07457 Fix canvas size button set item borders
We must not activate HAS_TEXT flag on widgets without text on XML files processing the mnemonic character.
2017-03-09 12:00:32 -03:00
David Capello
94dcfa7f35 Fix ColorButton font
- We've added a new "font" attribute in <style>s elements.
- Fonts aren't reset when we refresh the theme. This must be fixed in a future version when the theme can be completely reloaded.
2017-03-08 18:53:36 -03:00
David Capello
f08757d9d2 Remove ui::Widget::textLength() member function 2017-02-21 10:48:25 -03:00
David Capello
a62f12ad09 Move all code to draw windows to ui-lib w/new styles 2017-02-17 14:18:47 -03:00
David Capello
235011e169 Add "const" to several Theme and Widget function members 2017-02-15 16:44:50 -03:00
David Capello
7cb41729ab Convert label and view into new styles
In this way the WidgetLoader looks for new styles only.
2017-02-14 14:55:45 -03:00
David Capello
17151cddcd Move mnemonic key as a property of ui::Widget
In this was we can process the text string just one time to remove the
character preceded by '&' that will be finally acts as a mnemonic. This
simplifies the rendering and text measure code too.
2017-02-14 14:16:37 -03:00
David Capello
bb4faca1d1 New Style class in "ui" layer to paint widgets (only button at this moment)
This new ui::Style should finally replace the old app::skin::SkinStyle
class. At this moment both implementations are working to avoid an
huge refactor in just one commit.

- Added new ui::Style property in ui::Widget.
- Removed old code to set the button "bevel" (removed
  app::setup_bevels() functions).
- Removed setup_look() function and Left/RightButtonLooks.
- Removed check_button_new() function.
- Removed ui::Theme::paintButton/ComboBoxButton() functions.
2017-02-13 18:34:23 -03:00
David Capello
6c9c0066a0 Replace ui::CurrentTheme with ui::set/get_theme() 2017-02-08 14:50:58 -03:00
David Capello
47f3d540b7 Fix drawing UI text with TrueType fonts (related to #124) 2017-02-06 17:58:55 -03:00
David Capello
315584d819 Close toolbar popup when the document is closed 2016-12-07 11:12:19 -03:00
David Capello
701170d85e Fix alt+mnemonic on macOS 2016-11-24 19:26:21 -03:00
David Capello
b95326435c Remove an always-true if statement 2016-11-14 15:53:36 -03:00
David Capello
3f052cfe2e Return nullptr instead of assert in Widget::font() 2016-10-17 10:49:37 -03:00
David Capello
4119962ee6 Remove Widget::onDisable/onDeselect() member functions
Replaced with an argument in onEnable/onSelect().
2016-09-08 15:53:10 -03:00
David Capello
03be4aa23d Convert "bool" members in ui::Widget to flags 2016-08-29 12:23:23 -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
29f6db6f35 Widget::textLength() returns the number of (Unicode) characters in the text field 2016-03-14 12:38:11 -03:00
David Capello
0abe01c5f4 Merge she::LockedSurface/NonDisposableSurface with she::Surface 2016-03-09 11:00:17 -03:00
David Capello
802b8a0a10 Fix performance problem when we change color sliders with mouse movement 2016-02-17 18:32:34 -03:00
David Capello
1588e834c3 Fix artifacts when scrolling on widgets with sub-children (fix #963)
This bug was introduced in b0650f6afea1b860a8593fd4614ca272f8edbfac
To fix this issue we've to remove kPaintMessages from the message queue
for widgets that were moved. Those pending paint messages aren't valid
anymore because the widget was invalidated again.
2016-02-15 15:54:54 -03:00
David Capello
b0650f6afe Generalize View::setViewScroll() to blit valid/scrollable region automatically
With this change we are removing specific code to scroll the Editor widget.
Now if we use Editor::setEditorScroll() to scroll it should work as
View::setViewScroll(). In this way we remove the ugly "blitValidRegion"
parameter from setEditorScroll().

Changes:
* Removed Widget::scrollRegion() because each widget must control
  valid/invalid regions after a ui::move_region() in a very specific way
  (see View::setViewScroll() or Window::moveWindow)
* Invalidate the whole widget on Widget::setBoundsQuietly()
* Fixed problems blitting invalid regions/not yet updated/painted: using
  the new ui::Manager::m_invalidRegion.
* Added View::onSetViewScroll() and View::onScrollRegion()
* Added FileListView to avoid moving the thumbnail region when we scroll
2016-01-05 16:37:52 -03:00
David Capello
e64cc958ce Minor change/renames in Widget::flushRedraw() 2016-01-04 17:50:21 -03:00
David Capello
199a3db278 Don't scroll invalid areas in Widget::scrollRegion() 2015-12-28 13:37:01 -03:00
David Capello
1f513a1ed5 Restore selected ButtonSet item when we offer the mouse capture
When a ButtonSet triggers an onClick() when a mouse up message is received
(ButtonSet::m_multipleSelection == true), in case the mouse capture is
offered to other ButtonSet, we've to restore the selected item when we
capture the mouse, because we've never generated the onClick() event
in the first place.
2015-12-16 16:55:49 -03:00