Skip to content

Instantly share code, notes, and snippets.

@angstyloop
Created March 31, 2023 00:28
Show Gist options
  • Save angstyloop/a5d9863826d3cd739ca202cb6bcaa3d2 to your computer and use it in GitHub Desktop.
Save angstyloop/a5d9863826d3cd739ca202cb6bcaa3d2 to your computer and use it in GitHub Desktop.
Example of putting a widget ( specifically a GtkLabel ) in a GtkScrolledWindow.
/* scrolledwindow.c
*
* Example of putting a GtkLabel in a GtkScrolledWindow.
*
* COMPILE
*
* gcc `pkg-config --cflags gtk4` -o scrolledwindow scrolledwindow.c `pkg-config --libs gtk4`
*
* RUN
*
* ./scrolledwindow
*/
#include <gtk/gtk.h>
#if GLIB_CHECK_VERSION(2, 74, 0)
#define APP_FLAGS G_APPLICATION_DEFAULT_FLAGS
#else
#define APP_FLAGS G_APPLICATION_FLAGS_NONE
#endif
static void
activate( GtkApplication *app, gpointer user_data )
{
GtkWidget *window, *vbox, *scrolled_window, *label;
window = gtk_application_window_new( app );
gtk_window_set_default_size (GTK_WINDOW (window), 100, 50);
vbox = gtk_box_new( GTK_ORIENTATION_VERTICAL, 10 );
scrolled_window = gtk_scrolled_window_new();
label = gtk_label_new("<0.o>");
gtk_scrolled_window_set_child( GTK_SCROLLED_WINDOW( scrolled_window ),
label );
gtk_box_append( GTK_BOX( vbox ), scrolled_window );
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolled_window ),
GTK_POLICY_NEVER,
GTK_POLICY_ALWAYS );
gtk_window_set_child( GTK_WINDOW( window ), vbox );
gtk_widget_show( window );
}
int
main( int argc, char **argv )
{
GtkApplication *app;
int status;
puts("Hover to the right of the label to see the scrollbar.");
app = gtk_application_new( "org.gtk.example", APP_FLAGS );
g_signal_connect( app, "activate", G_CALLBACK( activate ), NULL );
status = g_application_run( G_APPLICATION( app ), argc, argv );
g_object_unref( app );
return status;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment