@@ -2364,36 +2364,7 @@ static void
23642364handle_vadjustment_changed (GtkAdjustment * adjustment ,
23652365 NemoListView * view )
23662366{
2367- gboolean reallocate = FALSE;
2368-
2369- if (view -> details -> overlay_scrolling ) {
2370- gint upper , current_adjust , page_size , current_margin ;
2371-
2372- page_size = gtk_adjustment_get_page_size (adjustment );
2373- upper = gtk_adjustment_get_upper (adjustment );
2374- current_adjust = gtk_adjustment_get_value (adjustment );
2375- current_margin = gtk_widget_get_margin_bottom (GTK_WIDGET (view -> details -> tree_view ));
2376-
2377- if (upper == current_adjust + page_size ) {
2378- GtkWidget * hscrollbar = gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (view ));
2379- gint nat_height ;
2380-
2381- gtk_widget_get_preferred_height (hscrollbar , NULL , & nat_height );
2382- gtk_widget_set_margin_bottom (GTK_WIDGET (view -> details -> tree_view ), nat_height * 2 );
2383- if (current_margin != nat_height )
2384- reallocate = TRUE;
2385- } else {
2386- gtk_widget_set_margin_bottom (GTK_WIDGET (view -> details -> tree_view ), 0 );
2387-
2388- if (current_margin > 0 )
2389- reallocate = TRUE;
2390- }
2391- }
2392-
23932367 queue_update_visible_icons (view , NORMAL_UPDATE_VISIBLE_DELAY );
2394-
2395- if (reallocate )
2396- gtk_widget_queue_allocate (GTK_WIDGET (view -> details -> tree_view ));
23972368}
23982369
23992370static gint
@@ -2417,6 +2388,32 @@ on_treeview_realized (GtkWidget *widget,
24172388 view );
24182389}
24192390
2391+ static void
2392+ on_size_allocation_changed (GtkWidget * widget ,
2393+ GdkRectangle * allocation ,
2394+ gpointer user_data )
2395+ {
2396+ NemoListView * view = NEMO_LIST_VIEW (user_data );
2397+ GtkAdjustment * adjustment ;
2398+ gdouble page_size , upper ;
2399+
2400+ adjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (view -> details -> tree_view ));
2401+ g_object_get (adjustment , "page-size" , & page_size , "upper" , & upper , NULL );
2402+
2403+ if (view -> details -> overlay_scrolling && page_size < upper ) {
2404+ GtkWidget * hscrollbar = gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (view ));
2405+ gint nat_height ;
2406+
2407+ gtk_widget_get_preferred_height (hscrollbar , NULL , & nat_height );
2408+ gtk_widget_set_margin_bottom (GTK_WIDGET (view -> details -> tree_view ), nat_height + 2 );
2409+ }
2410+ else {
2411+ gtk_widget_set_margin_bottom (GTK_WIDGET (view -> details -> tree_view ), 0 );
2412+ }
2413+
2414+ gtk_widget_queue_allocate (widget );
2415+ }
2416+
24202417static void
24212418update_date_fonts (NemoListView * view )
24222419{
@@ -2581,6 +2578,7 @@ create_and_set_up_tree_view (NemoListView *view)
25812578 G_CALLBACK (focus_in_event_callback ), view , 0 );
25822579
25832580 g_signal_connect (view -> details -> tree_view , "realize" , G_CALLBACK (on_treeview_realized ), view );
2581+ g_signal_connect (view -> details -> tree_view , "size-allocate" , G_CALLBACK (on_size_allocation_changed ), view );
25842582
25852583 view -> details -> model = g_object_new (NEMO_TYPE_LIST_MODEL , NULL );
25862584 gtk_tree_view_set_model (view -> details -> tree_view , GTK_TREE_MODEL (view -> details -> model ));
0 commit comments