diff --git a/src/Win_GParted.cc b/src/Win_GParted.cc index e8045034..3da063a4 100644 --- a/src/Win_GParted.cc +++ b/src/Win_GParted.cc @@ -820,6 +820,7 @@ bool Win_GParted::Merge_Operations( unsigned int first, unsigned int second ) void Win_GParted::Refresh_Visual() { std::vector partitions = devices[ current_device ] .partitions ; + int largest_unallocated = -1; //make all operations visible for ( unsigned int t = 0 ; t < operations .size(); t++ ) @@ -859,7 +860,12 @@ void Win_GParted::Refresh_Visual() index_extended = t ; primary_count++; break; - + case GParted::TYPE_UNALLOCATED : + if (largest_unallocated == -1) + largest_unallocated = t; + else if( (partitions[t].sector_end - partitions[t].sector_start) > + (partitions[largest_unallocated].sector_end - partitions[largest_unallocated].sector_start)) + largest_unallocated = t; default : break; } @@ -873,6 +879,12 @@ void Win_GParted::Refresh_Visual() //no partition can be selected after a refresh.. selected_partition .Reset() ; + if( largest_unallocated != -1 ) + { + selected_partition = partitions[largest_unallocated]; + treeview_detail.set_selected( selected_partition ); + drawingarea_visualdisk.set_selected( selected_partition ); + } set_valid_operations() ; while ( Gtk::Main::events_pending() )