mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-12 05:36:59 -04:00
bufgix: with newer version of wxWidgets (2.8), image slice dialog was crashing because events were being sent before the initialization was complete.
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1520 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -78,6 +78,7 @@ DEFINE_EVENT_TYPE(EVENT_SLICE_CHANGED);
|
|||||||
ImageSliceWindow::ImageSliceWindow(Window* parent, const Image& source, const wxSize& target_size, const AlphaMask& mask)
|
ImageSliceWindow::ImageSliceWindow(Window* parent, const Image& source, const wxSize& target_size, const AlphaMask& mask)
|
||||||
: wxDialog(parent,wxID_ANY,_TITLE_("slice image"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxFULL_REPAINT_ON_RESIZE)
|
: wxDialog(parent,wxID_ANY,_TITLE_("slice image"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxFULL_REPAINT_ON_RESIZE)
|
||||||
, slice(source, target_size)
|
, slice(source, target_size)
|
||||||
|
, initialized(false)
|
||||||
{
|
{
|
||||||
// init controls
|
// init controls
|
||||||
const wxPoint defPos = wxDefaultPosition;
|
const wxPoint defPos = wxDefaultPosition;
|
||||||
@@ -170,6 +171,8 @@ ImageSliceWindow::ImageSliceWindow(Window* parent, const Image& source, const wx
|
|||||||
s->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxALL, 8);
|
s->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxALL, 8);
|
||||||
s->SetSizeHints(this);
|
s->SetSizeHints(this);
|
||||||
SetSizer(s);
|
SetSizer(s);
|
||||||
|
// Only now do we allow events to be processed.
|
||||||
|
initialized = true;
|
||||||
updateControls();
|
updateControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,6 +187,7 @@ Image ImageSliceWindow::getImage() const {
|
|||||||
// ----------------------------------------------------------------------------- : ImageSliceWindow : Controls
|
// ----------------------------------------------------------------------------- : ImageSliceWindow : Controls
|
||||||
|
|
||||||
void ImageSliceWindow::onChangeSize(wxCommandEvent&) {
|
void ImageSliceWindow::onChangeSize(wxCommandEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
int sel = size->GetSelection();
|
int sel = size->GetSelection();
|
||||||
if (sel == 0) {
|
if (sel == 0) {
|
||||||
// original size
|
// original size
|
||||||
@@ -209,46 +213,56 @@ void ImageSliceWindow::onChangeSize(wxCommandEvent&) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ImageSliceWindow::onChangeLeft(wxCommandEvent&) {
|
void ImageSliceWindow::onChangeLeft(wxCommandEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.selection.x = left->GetValue();
|
slice.selection.x = left->GetValue();
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
void ImageSliceWindow::onChangeTop(wxCommandEvent&) {
|
void ImageSliceWindow::onChangeTop(wxCommandEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.selection.y = top->GetValue();
|
slice.selection.y = top->GetValue();
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
void ImageSliceWindow::onChangeWidth(wxCommandEvent&) {
|
void ImageSliceWindow::onChangeWidth(wxCommandEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.selection.width = width->GetValue();
|
slice.selection.width = width->GetValue();
|
||||||
onUpdateFromControl(PREFER_WIDTH);
|
onUpdateFromControl(PREFER_WIDTH);
|
||||||
}
|
}
|
||||||
void ImageSliceWindow::onChangeHeight(wxCommandEvent&) {
|
void ImageSliceWindow::onChangeHeight(wxCommandEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.selection.height = height->GetValue();
|
slice.selection.height = height->GetValue();
|
||||||
onUpdateFromControl(PREFER_HEIGHT);
|
onUpdateFromControl(PREFER_HEIGHT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageSliceWindow::onChangeFixAspect(wxCommandEvent&) {
|
void ImageSliceWindow::onChangeFixAspect(wxCommandEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.aspect_fixed = fix_aspect->GetValue();
|
slice.aspect_fixed = fix_aspect->GetValue();
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageSliceWindow::onChangeZoom(wxSpinEvent&) {
|
void ImageSliceWindow::onChangeZoom(wxSpinEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.zoomX(zoom->GetValue() / 100.0);
|
slice.zoomX(zoom->GetValue() / 100.0);
|
||||||
slice.zoomY(zoom->GetValue() / 100.0);
|
slice.zoomY(zoom->GetValue() / 100.0);
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
void ImageSliceWindow::onChangeZoomX(wxSpinEvent&) {
|
void ImageSliceWindow::onChangeZoomX(wxSpinEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.zoomX(zoom_x->GetValue() / 100.0);
|
slice.zoomX(zoom_x->GetValue() / 100.0);
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
void ImageSliceWindow::onChangeZoomY(wxSpinEvent&) {
|
void ImageSliceWindow::onChangeZoomY(wxSpinEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.zoomY(zoom_y->GetValue() / 100.0);
|
slice.zoomY(zoom_y->GetValue() / 100.0);
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageSliceWindow::onChangeSharpen(wxCommandEvent&) {
|
void ImageSliceWindow::onChangeSharpen(wxCommandEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.sharpen = sharpen->GetValue();
|
slice.sharpen = sharpen->GetValue();
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
void ImageSliceWindow::onChangeSharpenAmount(wxScrollEvent&) {
|
void ImageSliceWindow::onChangeSharpenAmount(wxScrollEvent&) {
|
||||||
|
if (!initialized) return;
|
||||||
slice.sharpen_amount = sharpen_amount->GetValue();
|
slice.sharpen_amount = sharpen_amount->GetValue();
|
||||||
onUpdateFromControl();
|
onUpdateFromControl();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ class ImageSliceWindow : public wxDialog {
|
|||||||
wxSizer* zoom_sizer, *zoom_fixed, *zoom_free;
|
wxSizer* zoom_sizer, *zoom_fixed, *zoom_free;
|
||||||
wxCheckBox* sharpen;
|
wxCheckBox* sharpen;
|
||||||
wxSlider* sharpen_amount;
|
wxSlider* sharpen_amount;
|
||||||
|
bool initialized; // is the gui initialized?
|
||||||
|
|
||||||
// --------------------------------------------------- : Events
|
// --------------------------------------------------- : Events
|
||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
|
|||||||
Reference in New Issue
Block a user