From c79e1cc89b8b4e1723749bec564895c6974c796c Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 14 Dec 2016 15:36:18 +0100 Subject: [PATCH] Fixed UI bug on OSX, experimental features made switchable through environment. --- lib/Slic3r/GUI/3DScene.pm | 18 ++++++++++++++++-- lib/Slic3r/GUI/Plater.pm | 11 +++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/Slic3r/GUI/3DScene.pm b/lib/Slic3r/GUI/3DScene.pm index 2be09e596..76440e54f 100644 --- a/lib/Slic3r/GUI/3DScene.pm +++ b/lib/Slic3r/GUI/3DScene.pm @@ -191,6 +191,12 @@ sub new { return $self; } +sub Destroy { + my ($self) = @_; + $self->DestroyGL; + return $self->SUPER::Destroy; +} + sub _first_selected_object_id { my ($self) = @_; for my $i (0..$#{$self->volumes}) { @@ -786,7 +792,8 @@ sub InitGL { $self->init(1); my $shader; - $shader = $self->{shader} = new Slic3r::GUI::GLShader; + $shader = $self->{shader} = new Slic3r::GUI::GLShader + if (defined($ENV{'SLIC3R_EXPERIMENTAL'} && defined($ENV{'SLIC3R_EXPERIMENTAL'} == 1); if ($self->{shader}) { my $info = $shader->Load($self->_fragment_shader, $self->_vertex_shader); print $info if $info; @@ -839,7 +846,14 @@ sub InitGL { glEnable(GL_COLOR_MATERIAL); glEnable(GL_MULTISAMPLE); } - + +sub DestroyGL { + my $self = shift; + if ($self->init && $self->GetContext) { + delete $self->{shader}; + } +} + sub Render { my ($self, $dc) = @_; diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 2ba5a1ae5..119087a8d 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -11,7 +11,7 @@ use Slic3r::Geometry qw(X Y Z MIN MAX scale unscale deg2rad); use LWP::UserAgent; use threads::shared qw(shared_clone); use Wx qw(:button :cursor :dialog :filedialog :keycode :icon :font :id :listctrl :misc - :panel :sizer :toolbar :window wxTheApp :notebook :combobox); + :panel :sizer :toolbar :window wxTheApp :notebook :combobox wxNullBitmap); use Wx::Event qw(EVT_BUTTON EVT_TOGGLEBUTTON EVT_COMMAND EVT_KEY_DOWN EVT_LIST_ITEM_ACTIVATED EVT_LIST_ITEM_DESELECTED EVT_LIST_ITEM_SELECTED EVT_MOUSE_EVENTS EVT_PAINT EVT_TOOL EVT_CHOICE EVT_COMBOBOX EVT_TIMER EVT_NOTEBOOK_PAGE_CHANGED); @@ -158,7 +158,8 @@ sub new { $self->{htoolbar}->AddTool(TB_SETTINGS, "Settings…", Wx::Bitmap->new($Slic3r::var->("cog.png"), wxBITMAP_TYPE_PNG), ''); # FIXME add a button for layer editing - $self->{htoolbar}->AddCheckTool(TB_LAYER_EDITING, "Layer editing", Wx::Bitmap->new($Slic3r::var->("cog.png"), wxBITMAP_TYPE_PNG), ''); + $self->{htoolbar}->AddTool(TB_LAYER_EDITING, 'Layer Editing', Wx::Bitmap->new($Slic3r::var->("delete.png"), wxBITMAP_TYPE_PNG), wxNullBitmap, 1, undef, 'Layer Editing'); + if (defined($ENV{'SLIC3R_EXPERIMENTAL'} && defined($ENV{'SLIC3R_EXPERIMENTAL'} == 1); } else { my %tbar_buttons = ( add => "Add…", @@ -180,8 +181,10 @@ sub new { $self->{"btn_$_"} = Wx::Button->new($self, -1, $tbar_buttons{$_}, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); $self->{btoolbar}->Add($self->{"btn_$_"}); } - $self->{"btn_layer_editing"} = Wx::ToggleButton->new($self, -1, $tbar_buttons{'layer_editing'}, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); - $self->{btoolbar}->Add($self->{"btn_layer_editing"}); + if (defined($ENV{'SLIC3R_EXPERIMENTAL'} && defined($ENV{'SLIC3R_EXPERIMENTAL'} == 1) { + $self->{"btn_layer_editing"} = Wx::ToggleButton->new($self, -1, $tbar_buttons{'layer_editing'}, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); + $self->{btoolbar}->Add($self->{"btn_layer_editing"}); + } } $self->{list} = Wx::ListView->new($self, -1, wxDefaultPosition, wxDefaultSize,