mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Removed unneeded scene reloads when selecting objects
This commit is contained in:
		
							parent
							
								
									e9b83a20d0
								
							
						
					
					
						commit
						e2e4310322
					
				
					 5 changed files with 34 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -1152,7 +1152,11 @@ sub InitGL {
 | 
			
		|||
    $self->volumes->finalize_geometry(1) 
 | 
			
		||||
        if ($^O eq 'linux' && $self->UseVBOs);
 | 
			
		||||
 | 
			
		||||
    $self->zoom_to_bed;
 | 
			
		||||
    if (scalar @{$self->volumes} > 0) {
 | 
			
		||||
        $self->zoom_to_volumes;
 | 
			
		||||
    } else {
 | 
			
		||||
        $self->zoom_to_bed;
 | 
			
		||||
    }    
 | 
			
		||||
        
 | 
			
		||||
    glClearColor(0, 0, 0, 1);
 | 
			
		||||
    glColor3f(1, 0, 0);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1809,8 +1809,7 @@ sub list_item_deselected {
 | 
			
		|||
    if ($self->{list}->GetFirstSelected == -1) {
 | 
			
		||||
        $self->select_object(undef);
 | 
			
		||||
        $self->{canvas}->Refresh;
 | 
			
		||||
        #FIXME VBOs are being refreshed just to change a selection color?
 | 
			
		||||
        $self->{canvas3D}->reload_scene if $self->{canvas3D};
 | 
			
		||||
        $self->{canvas3D}->deselect_volumes if $self->{canvas3D};
 | 
			
		||||
    }
 | 
			
		||||
    undef $self->{_lecursor};
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1822,8 +1821,7 @@ sub list_item_selected {
 | 
			
		|||
    my $obj_idx = $event->GetIndex;
 | 
			
		||||
    $self->select_object($obj_idx);
 | 
			
		||||
    $self->{canvas}->Refresh;
 | 
			
		||||
    #FIXME VBOs are being refreshed just to change a selection color?
 | 
			
		||||
    $self->{canvas3D}->reload_scene if $self->{canvas3D};
 | 
			
		||||
    $self->{canvas3D}->update_volumes_selection if $self->{canvas3D};
 | 
			
		||||
    undef $self->{_lecursor};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2015,8 +2013,15 @@ sub selection_changed {
 | 
			
		|||
 | 
			
		||||
sub select_object {
 | 
			
		||||
    my ($self, $obj_idx) = @_;
 | 
			
		||||
 | 
			
		||||
    # remove current selection
 | 
			
		||||
    foreach my $o (0..$#{$self->{objects}}) {
 | 
			
		||||
        $PreventListEvents = 1;
 | 
			
		||||
        $self->{objects}->[$o]->selected(0);
 | 
			
		||||
        $self->{list}->Select($o, 0);
 | 
			
		||||
        $PreventListEvents = 0;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    $_->selected(0) for @{ $self->{objects} };
 | 
			
		||||
    if (defined $obj_idx) {
 | 
			
		||||
        $self->{objects}->[$obj_idx]->selected(1);
 | 
			
		||||
        # We use this flag to avoid circular event handling
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,9 @@ sub new {
 | 
			
		|||
    $self->{on_select_object}   = sub {};
 | 
			
		||||
    $self->{on_instances_moved} = sub {};
 | 
			
		||||
    $self->{on_wipe_tower_moved} = sub {};
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    $self->{objects_volumes_idxs} = ();
 | 
			
		||||
        
 | 
			
		||||
    $self->on_select(sub {
 | 
			
		||||
        my ($volume_idx) = @_;
 | 
			
		||||
        $self->{on_select_object}->(($volume_idx == -1) ? undef : $self->volumes->[$volume_idx]->object_idx)
 | 
			
		||||
| 
						 | 
				
			
			@ -181,6 +183,17 @@ sub set_on_enable_action_buttons {
 | 
			
		|||
    $self->on_enable_action_buttons($cb);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub update_volumes_selection {
 | 
			
		||||
    my ($self) = @_;
 | 
			
		||||
 | 
			
		||||
    foreach my $obj_idx (0..$#{$self->{model}->objects}) {
 | 
			
		||||
        if ($self->{objects}[$obj_idx]->selected) {
 | 
			
		||||
            my @volume_idxs = @{$self->{objects_volumes_idxs}[$obj_idx]};
 | 
			
		||||
            $self->select_volume($_) for @volume_idxs;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub reload_scene {
 | 
			
		||||
    my ($self, $force) = @_;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -194,12 +207,14 @@ sub reload_scene {
 | 
			
		|||
 | 
			
		||||
    $self->{reload_delayed} = 0;
 | 
			
		||||
 | 
			
		||||
    $self->{objects_volumes_idxs} = ();    
 | 
			
		||||
    foreach my $obj_idx (0..$#{$self->{model}->objects}) {
 | 
			
		||||
        my @volume_idxs = $self->load_object($self->{model}, $self->{print}, $obj_idx);
 | 
			
		||||
        if ($self->{objects}[$obj_idx]->selected) {
 | 
			
		||||
            $self->select_volume($_) for @volume_idxs;
 | 
			
		||||
        }
 | 
			
		||||
        push(@{$self->{objects_volumes_idxs}}, \@volume_idxs);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    $self->update_volumes_selection;
 | 
			
		||||
        
 | 
			
		||||
    if (defined $self->{config}->nozzle_diameter) {
 | 
			
		||||
        # Should the wipe tower be visualized?
 | 
			
		||||
        my $extruders_count = scalar @{ $self->{config}->nozzle_diameter };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,7 +116,6 @@ sub new {
 | 
			
		|||
        $canvas->set_auto_bed_shape;
 | 
			
		||||
        $canvas->SetSize([500,500]);
 | 
			
		||||
        $canvas->SetMinSize($canvas->GetSize);
 | 
			
		||||
        $canvas->zoom_to_volumes;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    $self->{sizer} = Wx::BoxSizer->new(wxHORIZONTAL);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -163,7 +163,6 @@ sub new {
 | 
			
		|||
        $canvas->set_auto_bed_shape;
 | 
			
		||||
        $canvas->SetSize([500,700]);
 | 
			
		||||
        $canvas->update_volumes_colors_by_extruder($self->GetParent->GetParent->GetParent->{config});
 | 
			
		||||
        $canvas->zoom_to_volumes;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    $self->{sizer} = Wx::BoxSizer->new(wxHORIZONTAL);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue