137 Commits

Author SHA1 Message Date
David Capello
1aaeacc460 Refactor several "getNoun()" getters to "noun()"
This is a work-in-progress to create a consistent API and finally
separate the whole Aseprite base/gfx/ui libs into a reusable C++ library.

Classes:
app::IFileItem, app::AppMenuItem, app::skin::SkinPart,
gfx::Rect, gfx::Border, she::FileDialog,
ui::IButtonIcon, ui::Graphics, ui::Overlay, ui::Widget,
ui::ScrollableViewDelegate, and UI events
2015-12-04 14:39:04 -03:00
David Capello
cdd955441a Rename PreferredSize -> SizeHint 2015-12-03 21:50:05 -03:00
David Capello
78ba213471 Rename ui::Widget::getChildren() -> children()
Extra changes:
* Removed UI_FOREACH_WIDGET(), replaced with range-based for-loops
2015-12-03 19:46:13 -03:00
David Capello
0900019b1e Minor change in Widget::scrollRegion() to avoid an extra Region::offset() 2015-10-14 18:41:56 -03:00
David Capello
bd1a1ffafb Add support to transport key modifiers from she events to UI messages
It’s better if we use the original key modifiers from she::Events (given
by Cocoa or Win32 APIs) instead of asking for the current state of
the modifier when the ui::Message is created (which can be different
from the original value).

This commit adds support to transport the modifiers, but it is not
using the original key modifiers yet.
2015-10-14 16:42:49 -03:00
David Capello
e8abba1b93 Refactor some UI code
- Moved ui::GuiSystem from ui/base.h to ui/system.h as ui::UISystem
- Moved some internals to ui::details namespace
- Fix crash of UI tests when ~Manager is called
- Removed ui::init/exit_system() functions
2015-09-01 10:18:47 -03:00
David Capello
a79c9479b7 Replace dynamic_cast with static_cast in Widget::getRoot() 2015-08-25 14:40:53 -03:00
David Capello
549404c216 Fix tooltips visibility (fix #770)
TooltipManager uses filters to intercept a kMouseEnterMessage, if we
remove this kind of message for the TooltipManager itself (in sendMessage),
we never get that message so we never show the tooltip.

This problem was introduced in d1799c037abc011e79663892f52e0e2e0b5c5334
to fix a problem with comboboxes.
2015-08-24 11:33:02 -03:00
David Capello
d1799c037a Fix hanging when switching focus between different editable comboboxes 2015-08-20 22:04:28 -03:00
David Capello
835fe40540 Fix problem detecting Timeline widgets when it's hidden 2015-08-20 09:09:49 -03:00
David Capello
4dc6da286e Add zoom slider in StatusBar (issue #420) 2015-08-14 19:46:48 -03:00
David Capello
6b9c4c53ae Add icons in "New Sprite" dialog
Some changes needed to do this:
* Added support to show icon+text in ButtonSet items
* Added an extra parameter in Graphics::drawUIString() to avoid drawing
  the underscore
* Fixed expansion of ButtonSet items when the grid is resized
* Added support for Alt+mnemonic shortcuts in ButtonSet items
2015-08-12 12:38:07 -03:00
David Capello
48a1af7342 Revert "Make Manager::freeMouse() to select a new visible widget"
This reverts commit 3accd85662972ea0e70e28b2177d79054fbfe7de.
2015-07-03 13:43:05 -03:00
David Capello
3accd85662 Make Manager::freeMouse() to select a new visible widget
In this way we generate a SetCursor message when a widget is hidden.
2015-06-29 15:46:08 -03:00
David Capello
0b0cb56c1e Replace some UI_FOREACH_WIDGET() with range-based for loops 2015-06-29 15:42:34 -03:00
David Capello
e4df25f4df Merge ui::Widget::m_align with m_flags field
Here we remove Widget::setFlags() member function, as it's not used.
2015-06-24 12:06:33 -03:00
David Capello
a2538628c7 Convert ui::Widget::border_width/child_spacing to private fields 2015-06-23 19:20:49 -03:00
David Capello
1922a27b38 Make ui::Widget::flags field private 2015-06-23 16:07:41 -03:00
David Capello
7f2cd3b6a9 Rename ui::Widget::min/max_w/h fields to m_min/maxSize and make them private 2015-06-23 15:13:42 -03:00
David Capello
325e9245bf Rename ui::Widget::type -> m_type and make it private 2015-06-23 14:37:22 -03:00
David Capello
f01b816fb5 Remove JI_ prefix from ui/base.h constants 2015-06-23 14:00:00 -03:00
David Capello
da3b3de6c1 Add she::LockedSurface::scrollTo() so we can specialize it in the Skia port 2015-05-22 13:26:09 -03:00
David Capello
eeb6d6e1b5 Fix problem resetting fonts after F5 for widgets with "mini font" (after theme is reloaded)
There are some widgets (e.g. fg/bg color buttons in the ColorBar, and
ContextBar's check-boxes) that use a "mini font". We could setup the mini
font in onInitTheme(), but the whole program is not ready to do something
like that (there are too much child_spacing/borders values that are set
outside onInitTheme).

A better way is to ask to the theme itself (Theme::getWidgetFont())
about what font to use for each specific widget. And the Widget::m_font
field can act as a cache of this requested font. So now the "mini font"
is specified in a SkinProperty's flag.
2015-05-05 19:14:33 -03:00
David Capello
c219e4dc07 Minor format change in ui/widget.cpp 2015-05-04 10:40:23 -03:00
David Capello
7a3c0a1eed Minor fixes in style for ButtonSet and StatusBar controls (mini Entry/Slider) 2015-04-07 11:29:36 -03:00
David Capello
22c3c4f20e Remove implicit SharedPtr conversion to T* 2015-04-02 20:42:43 -03:00
David Capello
70b0495fdb Fix bug showing marching ants from a hidden app::Editor
Widget::isVisible() must return false if the widget isn't
inside a ui::Manager
2015-03-26 10:49:12 -03:00
David Capello
0350ac4bbe Initial work on Skia backend (WIP) 2015-03-16 15:05:13 -03:00
David Capello
ad856b2a55 Use std:: when necessary, and std::numeric_limits instead of INT_MAX 2015-03-04 21:35:11 -03:00
David Capello
b7f69186bb Add Widget::removeAllChildren() member function 2015-03-04 16:38:01 -03:00
David Capello
1b3d8650bd Remove Widget::user_data and theme_data fields 2014-11-25 22:46:50 -03:00
David Capello
752faf11f2 Remove jmouse_[xyz]() functions 2014-11-25 22:10:28 -03:00
David Capello
d9ed3c2348 Rename jmouse_[gs]et_cursor() to ui::[gs]et_mouse_cursor() 2014-11-25 21:30:56 -03:00
David Capello
17b0bee0ae Refactor: Use gfx::Point in several places instead of two x,y integers
Changes:
* Add doc::Sprite::bounds()
* Use gfx::Point to store the doc::Cel position
* Replace "int x, int y" with a "const gfx::Point&" param
* Fix Mask::intersect(const gfx::Rect&) and Mask::crop(const Image*)
2014-11-24 00:09:22 -03:00
David Capello
30d09c9334 Don't use allegro.h in ui::move_region() 2014-09-19 11:08:39 -03:00
David Capello
d14a0fe075 Add "Size" options in CanvasSizeCommand to specify width/height
- Added canvas icons to change the expansion direction in CanvasSizeCommand
- Added Widget::at() and Widget::offerCapture() member functions
- Improved ButtonSet widget
2014-09-08 02:27:41 -03:00
David Capello
4d4958bf35 Move capture/release mouse function to she layer 2014-08-09 22:32:05 -03:00
David Capello
4b7bf5b835 Merge she::Color and ui::Color types in gfx::Color 2014-06-28 16:10:39 -03:00
David Capello
901b2acc06 Remove some references to <allegro.h> 2014-06-28 11:17:22 -03:00
David Capello
b37ec489f6 Remove ui::Widget::isScancodeMnemonic() member function 2014-06-28 11:14:03 -03:00
David Capello
5bbff161b9 Now ui::Graphics uses she::Surface instead of Allegro BITMAP 2014-06-26 22:14:39 -03:00
David Capello
dbad153698 Add she::Font class (wrapper of Allegro FONT)
This is an huge refactor to avoid handling Allegro FONT directly. Some
changes:
* Add she::System::defaultDisplay/Font, createRgbaSurface, loadSurface,
  and loadRgbaSurface.
* Rename she::CreateSystem/Instance to she::create_system/instance.
* Remove ui/font.cpp and move ui/fontbmp.cpp to she library.
* ui::IButtonIcon uses she::Surface instead of BITMAP.
* Rename she::LockedSurface::drawAlphaSurface -> drawRgbaSurface
* Rename ui::SetDisplay -> set_display
* Rename _ji_font_text_len -> ui::Graphics::measureUIStringLength
2014-06-22 18:53:14 -03:00
David Capello
94b2fb6dde Translate Widget::m_updateRegion field when the widget is moved 2014-05-04 21:32:43 -03:00
David Capello
b45cd3e07e Minor changes in Widget::scrollRegion() 2014-05-04 21:32:13 -03:00
David Capello
e363577e65 Better double-click: remove DoubleClickeable and make ui::Widget default behavior to convert double-clicks into mouse downs 2014-04-29 23:02:27 -03:00
David Capello
15a3b6ac2c Fix double-click issues
- Fix double-click behavior when double-clicks are generated from
  Manager::generateMouseMessages().
- Add Widget::setDoubleClickeable/isDoubleClickeable() member functions
  for widgets that accept double-clicks.
2014-04-26 11:09:59 -03:00
David Capello
3c4bbbe30c Replace jwidget_set_min/max_size() with Width::setMin/MaxSize() 2014-04-21 22:15:29 -03:00
David Capello
b33357ed46 Remove base::string (std::string is good enough for utf8 strings) 2014-04-20 19:53:27 -03:00
David Capello
bf03d10b03 Remove extra elements in #endif directives 2014-04-19 21:03:20 -03:00
David Capello
a34d181530 Add Widget::is/setTransparent property to paint a widget merged with its background
This fixes problems with tooltips, toolbar popups and context bar popups.
It fixes issue #297 (undo notifications rendering problems).
2014-04-19 18:51:42 -03:00