mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Fix of interaction between opengl contexts and main page notebook
This commit is contained in:
		
							parent
							
								
									515502e685
								
							
						
					
					
						commit
						40b327eb11
					
				
					 9 changed files with 99 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -187,6 +187,7 @@ sub new {
 | 
			
		|||
    if ($Slic3r::GUI::have_OpenGL) {
 | 
			
		||||
        $self->{preview3D} = Slic3r::GUI::Plater::3DPreview->new($self->{preview_notebook}, $self->{print}, $self->{gcode_preview_data}, $self->{config});
 | 
			
		||||
        Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
 | 
			
		||||
        Slic3r::GUI::_3DScene::enable_legend_texture($self->{preview3D}->canvas, 1);
 | 
			
		||||
        Slic3r::GUI::_3DScene::register_on_viewport_changed_callback($self->{preview3D}->canvas, sub { Slic3r::GUI::_3DScene::set_viewport_from_scene($self->{canvas3D}, $self->{preview3D}->canvas); });
 | 
			
		||||
        $self->{preview_notebook}->AddPage($self->{preview3D}, L('Preview'));
 | 
			
		||||
        $self->{preview3D_page_idx} = $self->{preview_notebook}->GetPageCount-1;
 | 
			
		||||
| 
						 | 
				
			
			@ -200,19 +201,18 @@ sub new {
 | 
			
		|||
    
 | 
			
		||||
    EVT_NOTEBOOK_PAGE_CHANGED($self, $self->{preview_notebook}, sub {
 | 
			
		||||
        my $preview = $self->{preview_notebook}->GetCurrentPage;
 | 
			
		||||
        if ($preview == $self->{preview3D})
 | 
			
		||||
        {
 | 
			
		||||
        if (($preview != $self->{preview3D}) && ($preview != $self->{canvas3D})) {
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 0);
 | 
			
		||||
            Slic3r::GUI::_3DScene::reset_current_canvas();
 | 
			
		||||
            $preview->OnActivate if $preview->can('OnActivate');        
 | 
			
		||||
        } elsif ($preview == $self->{preview3D}) {
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 1);
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 0);
 | 
			
		||||
            Slic3r::GUI::_3DScene::enable_legend_texture($self->{preview3D}->canvas, 1);
 | 
			
		||||
            $self->{preview3D}->load_print(1);
 | 
			
		||||
            $self->{preview3D}->load_print;
 | 
			
		||||
            # sets the canvas as dirty to force a render at the 1st idle event (wxWidgets IsShownOnScreen() is buggy and cannot be used reliably)
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_as_dirty($self->{preview3D}->canvas);
 | 
			
		||||
        } else {
 | 
			
		||||
            Slic3r::GUI::_3DScene::enable_legend_texture($self->{preview3D}->canvas, 0);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($preview == $self->{canvas3D}) {
 | 
			
		||||
        } elsif ($preview == $self->{canvas3D}) {
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_active($self->{canvas3D}, 1);
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_active($self->{preview3D}->canvas, 0);
 | 
			
		||||
            if (Slic3r::GUI::_3DScene::is_reload_delayed($self->{canvas3D})) {
 | 
			
		||||
| 
						 | 
				
			
			@ -222,8 +222,6 @@ sub new {
 | 
			
		|||
            }            
 | 
			
		||||
            # sets the canvas as dirty to force a render at the 1st idle event (wxWidgets IsShownOnScreen() is buggy and cannot be used reliably)
 | 
			
		||||
            Slic3r::GUI::_3DScene::set_as_dirty($self->{canvas3D});
 | 
			
		||||
        } else {
 | 
			
		||||
            $preview->OnActivate if $preview->can('OnActivate');        
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -231,8 +231,10 @@ sub mouse_event {
 | 
			
		|||
        }
 | 
			
		||||
        $self->Refresh;
 | 
			
		||||
    } elsif ($event->LeftUp) {
 | 
			
		||||
        $self->{on_instances_moved}->()
 | 
			
		||||
            if $self->{drag_object};
 | 
			
		||||
        if ($self->{drag_object}) {
 | 
			
		||||
            $self->{on_instances_moved}->();
 | 
			
		||||
            Slic3r::GUI::_3DScene::reset_current_canvas();            
 | 
			
		||||
        }
 | 
			
		||||
        $self->{drag_start_pos} = undef;
 | 
			
		||||
        $self->{drag_object} = undef;
 | 
			
		||||
        $self->SetCursor(wxSTANDARD_CURSOR);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue