mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-29 19:20:09 +00:00
Add option to delete all brushes
This commit is contained in:
parent
733d0a8e74
commit
03faee9ce4
@ -29,6 +29,7 @@
|
||||
#include "she/system.h"
|
||||
#include "ui/menu.h"
|
||||
#include "ui/message.h"
|
||||
#include "ui/separator.h"
|
||||
#include "ui/tooltips.h"
|
||||
|
||||
namespace app {
|
||||
@ -62,8 +63,12 @@ protected:
|
||||
if (mouseMsg->buttons() == kButtonRight) {
|
||||
Menu menu;
|
||||
AppMenuItem deleteItem("Delete");
|
||||
AppMenuItem deleteAllItem("Delete All");
|
||||
deleteItem.Click.connect(&Item::onDeleteBrush, this);
|
||||
deleteAllItem.Click.connect(&Item::onDeleteAllBrushes, this);
|
||||
menu.addChild(&deleteItem);
|
||||
menu.addChild(new Separator("", JI_HORIZONTAL));
|
||||
menu.addChild(&deleteAllItem);
|
||||
|
||||
// Here we make the popup window temporaly floating, so it's
|
||||
// not closed by the popup menu.
|
||||
@ -81,6 +86,10 @@ private:
|
||||
m_delegate->onDeleteBrushSlot(m_slot);
|
||||
}
|
||||
|
||||
void onDeleteAllBrushes() {
|
||||
m_delegate->onDeleteAllBrushes();
|
||||
}
|
||||
|
||||
BrushPopup* m_popup;
|
||||
BrushPopupDelegate* m_delegate;
|
||||
BrushRef m_brush;
|
||||
|
@ -30,6 +30,7 @@ namespace app {
|
||||
public:
|
||||
virtual ~BrushPopupDelegate() { }
|
||||
virtual void onDeleteBrushSlot(int slot) = 0;
|
||||
virtual void onDeleteAllBrushes() = 0;
|
||||
};
|
||||
|
||||
class BrushPopup : public ui::PopupWindow {
|
||||
|
@ -109,6 +109,11 @@ protected:
|
||||
m_owner->removeBrush(slot);
|
||||
}
|
||||
|
||||
void onDeleteAllBrushes() override {
|
||||
while (!m_owner->brushes().empty())
|
||||
m_owner->removeBrush(m_owner->brushes().size());
|
||||
}
|
||||
|
||||
private:
|
||||
// Returns a little rectangle that can be used by the popup as the
|
||||
// first brush position.
|
||||
@ -1032,8 +1037,14 @@ int ContextBar::addBrush(const doc::BrushRef& brush)
|
||||
void ContextBar::removeBrush(int slot)
|
||||
{
|
||||
--slot;
|
||||
if (slot >= 0 && slot < (int)m_brushes.size())
|
||||
if (slot >= 0 && slot < (int)m_brushes.size()) {
|
||||
m_brushes[slot].reset();
|
||||
|
||||
// Erase empty trailing slots
|
||||
while (!m_brushes.empty() &&
|
||||
!m_brushes[m_brushes.size()-1])
|
||||
m_brushes.erase(--m_brushes.end());
|
||||
}
|
||||
}
|
||||
|
||||
void ContextBar::setActiveBrushBySlot(int slot)
|
||||
|
Loading…
x
Reference in New Issue
Block a user