X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=libs%2Fgtkutil%2Fpaned.cpp;h=bc0d1f7ac53e812d5563e8ee6bdd8c5c79721f65;hb=414307f1eb6b2f46b87121ea71d63adf973cf571;hp=446a8bb4f2d409984cbf79101d29bda5402ebaef;hpb=c52a4bd4da209e657018e8d799dcb488cd848e4c;p=xonotic%2Fnetradiant.git diff --git a/libs/gtkutil/paned.cpp b/libs/gtkutil/paned.cpp index 446a8bb4..bc0d1f7a 100644 --- a/libs/gtkutil/paned.cpp +++ b/libs/gtkutil/paned.cpp @@ -20,21 +20,9 @@ */ #include "paned.h" - -#include -#include - #include "frame.h" - -class PanedState -{ -public: -float position; -int size; -}; - -gboolean hpaned_allocate( GtkWidget* widget, GtkAllocation* allocation, PanedState* paned ){ +gboolean hpaned_allocate(ui::Widget widget, GtkAllocation* allocation, PanedState* paned ){ if ( paned->size != allocation->width ) { paned->size = allocation->width; gtk_paned_set_position( GTK_PANED( widget ), static_cast( paned->size * paned->position ) ); @@ -42,7 +30,7 @@ gboolean hpaned_allocate( GtkWidget* widget, GtkAllocation* allocation, PanedSta return FALSE; } -gboolean vpaned_allocate( GtkWidget* widget, GtkAllocation* allocation, PanedState* paned ){ +gboolean vpaned_allocate(ui::Widget widget, GtkAllocation* allocation, PanedState* paned ){ if ( paned->size != allocation->height ) { paned->size = allocation->height; gtk_paned_set_position( GTK_PANED( widget ), static_cast( paned->size * paned->position ) ); @@ -50,7 +38,7 @@ gboolean vpaned_allocate( GtkWidget* widget, GtkAllocation* allocation, PanedSta return FALSE; } -gboolean paned_position( GtkWidget* widget, gpointer dummy, PanedState* paned ){ +gboolean paned_position(ui::Widget widget, gpointer dummy, PanedState* paned ){ if ( paned->size != -1 ) { paned->position = gtk_paned_get_position( GTK_PANED( widget ) ) / static_cast( paned->size ); } @@ -61,33 +49,35 @@ PanedState g_hpaned = { 0.5f, -1, }; PanedState g_vpaned1 = { 0.5f, -1, }; PanedState g_vpaned2 = { 0.5f, -1, }; -GtkHPaned* create_split_views( GtkWidget* topleft, GtkWidget* topright, GtkWidget* botleft, GtkWidget* botright ){ - GtkHPaned* hsplit = ui::HPaned(); - gtk_widget_show( GTK_WIDGET( hsplit ) ); +ui::Widget create_split_views( ui::Widget topleft, ui::Widget topright, ui::Widget botleft, ui::Widget botright, ui::Widget& vsplit1, ui::Widget& vsplit2 ){ + auto hsplit = ui::HPaned(ui::New); + hsplit.show(); - g_signal_connect( G_OBJECT( hsplit ), "size_allocate", G_CALLBACK( hpaned_allocate ), &g_hpaned ); - g_signal_connect( G_OBJECT( hsplit ), "notify::position", G_CALLBACK( paned_position ), &g_hpaned ); + hsplit.connect( "size_allocate", G_CALLBACK( hpaned_allocate ), &g_hpaned ); + hsplit.connect( "notify::position", G_CALLBACK( paned_position ), &g_hpaned ); { - GtkVPaned* vsplit = ui::VPaned(); + auto vsplit = ui::VPaned(ui::New); + vsplit1 = vsplit; gtk_paned_add1( GTK_PANED( hsplit ), GTK_WIDGET( vsplit ) ); gtk_widget_show( GTK_WIDGET( vsplit ) ); - g_signal_connect( G_OBJECT( vsplit ), "size_allocate", G_CALLBACK( vpaned_allocate ), &g_vpaned1 ); - g_signal_connect( G_OBJECT( vsplit ), "notify::position", G_CALLBACK( paned_position ), &g_vpaned1 ); + vsplit.connect( "size_allocate", G_CALLBACK( vpaned_allocate ), &g_vpaned1 ); + vsplit.connect( "notify::position", G_CALLBACK( paned_position ), &g_vpaned1 ); gtk_paned_add1( GTK_PANED( vsplit ), GTK_WIDGET( create_framed_widget( topleft ) ) ); - gtk_paned_add2( GTK_PANED( vsplit ), GTK_WIDGET( create_framed_widget( topright ) ) ); + gtk_paned_add2( GTK_PANED( vsplit ), GTK_WIDGET( create_framed_widget( botleft ) ) ); } { - GtkVPaned* vsplit = ui::VPaned(); + auto vsplit = ui::VPaned(ui::New); + vsplit2 = vsplit; gtk_paned_add2( GTK_PANED( hsplit ), GTK_WIDGET( vsplit ) ); gtk_widget_show( GTK_WIDGET( vsplit ) ); - g_signal_connect( G_OBJECT( vsplit ), "size_allocate", G_CALLBACK( vpaned_allocate ), &g_vpaned2 ); - g_signal_connect( G_OBJECT( vsplit ), "notify::position", G_CALLBACK( paned_position ), &g_vpaned2 ); + vsplit.connect( "size_allocate", G_CALLBACK( vpaned_allocate ), &g_vpaned2 ); + vsplit.connect( "notify::position", G_CALLBACK( paned_position ), &g_vpaned2 ); - gtk_paned_add1( GTK_PANED( vsplit ), GTK_WIDGET( create_framed_widget( botleft ) ) ); + gtk_paned_add1( GTK_PANED( vsplit ), GTK_WIDGET( create_framed_widget( topright ) ) ); gtk_paned_add2( GTK_PANED( vsplit ), GTK_WIDGET( create_framed_widget( botright ) ) ); } return hsplit;