]> Pileus Git - ~andy/gtk/blobdiff - tests/testoffscreen.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / tests / testoffscreen.c
index 842b9c1ee02129f965b24e6ee5d862d3e84191ce..62589b5dd8b0d74fc2cf1d092d1ef78eba2ab924 100644 (file)
@@ -2,8 +2,6 @@
  * testoffscreen.c
  */
 
-#undef GTK_DISABLE_DEPRECATED
-
 #include <math.h>
 #include <gtk/gtk.h>
 #include "gtkoffscreenbox.h"
@@ -22,31 +20,38 @@ combo_changed_cb (GtkWidget *combo,
 }
 
 static gboolean
-layout_expose_handler (GtkWidget      *widget,
-                       GdkEventExpose *event)
+layout_draw_handler (GtkWidget *widget,
+                     cairo_t   *cr)
 {
   GtkLayout *layout = GTK_LAYOUT (widget);
+  GdkWindow *bin_window = gtk_layout_get_bin_window (layout);
+  GdkRectangle clip;
 
-  gint i,j;
+  gint i, j, x, y;
   gint imin, imax, jmin, jmax;
 
-  if (event->window != layout->bin_window)
+  if (!gtk_cairo_should_draw_window (cr, bin_window))
     return FALSE;
 
-  imin = (event->area.x) / 10;
-  imax = (event->area.x + event->area.width + 9) / 10;
+  gdk_window_get_position (bin_window, &x, &y);
+  cairo_translate (cr, x, y);
+
+  gdk_cairo_get_clip_rectangle (cr, &clip);
+
+  imin = (clip.x) / 10;
+  imax = (clip.x + clip.width + 9) / 10;
 
-  jmin = (event->area.y) / 10;
-  jmax = (event->area.y + event->area.height + 9) / 10;
+  jmin = (clip.y) / 10;
+  jmax = (clip.y + clip.height + 9) / 10;
 
   for (i = imin; i < imax; i++)
     for (j = jmin; j < jmax; j++)
       if ((i + j) % 2)
-       gdk_draw_rectangle (layout->bin_window,
-                            widget->style->black_gc,
-                            TRUE,
-                            10 * i, 10 * j,
-                            1 + i % 10, 1 + j % 10);
+          cairo_rectangle (cr,
+                           10 * i, 10 * j,
+                           1 + i % 10, 1 + j % 10);
+
+  cairo_fill (cr);
 
   return FALSE;
 }
@@ -57,10 +62,9 @@ scroll_layout (gpointer data)
   GtkWidget *layout = data;
   GtkAdjustment *adj;
 
-  adj = gtk_layout_get_hadjustment (GTK_LAYOUT (layout));
-  gtk_adjustment_set_value (adj,
-                           gtk_adjustment_get_value (adj) + 5.0);
-  return TRUE;
+  adj = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (layout));
+  gtk_adjustment_set_value (adj, gtk_adjustment_get_value (adj) + 5.0);
+  return G_SOURCE_CONTINUE;
 }
 
 static guint layout_timeout;
@@ -68,7 +72,9 @@ static guint layout_timeout;
 static void
 create_layout (GtkWidget *vbox)
 {
-  GtkWidget *layout;
+  GtkAdjustment *hadjustment, *vadjustment;
+  GtkLayout *layout;
+  GtkWidget *layout_widget;
   GtkWidget *scrolledwindow;
   GtkWidget *button;
   gchar buf[16];
@@ -82,21 +88,26 @@ create_layout (GtkWidget *vbox)
 
   gtk_box_pack_start (GTK_BOX (vbox), scrolledwindow, TRUE, TRUE, 0);
 
-  layout = gtk_layout_new (NULL, NULL);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow), layout);
+  layout_widget = gtk_layout_new (NULL, NULL);
+  layout = GTK_LAYOUT (layout_widget);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow), layout_widget);
 
   /* We set step sizes here since GtkLayout does not set
    * them itself.
    */
-  GTK_LAYOUT (layout)->hadjustment->step_increment = 10.0;
-  GTK_LAYOUT (layout)->vadjustment->step_increment = 10.0;
-
-  gtk_widget_set_events (layout, GDK_EXPOSURE_MASK);
-  g_signal_connect (layout, "expose_event",
-                   G_CALLBACK (layout_expose_handler),
+  hadjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (layout));
+  vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (layout));
+  gtk_adjustment_set_step_increment (hadjustment, 10.0);
+  gtk_adjustment_set_step_increment (vadjustment, 10.0);
+  gtk_scrollable_set_hadjustment (GTK_SCROLLABLE (layout), hadjustment);
+  gtk_scrollable_set_vadjustment (GTK_SCROLLABLE (layout), vadjustment);
+
+  gtk_widget_set_events (layout_widget, GDK_EXPOSURE_MASK);
+  g_signal_connect (layout, "draw",
+                   G_CALLBACK (layout_draw_handler),
                     NULL);
 
-  gtk_layout_set_size (GTK_LAYOUT (layout), 1600, 128000);
+  gtk_layout_set_size (layout, 1600, 128000);
 
   for (i = 0 ; i < 16 ; i++)
     for (j = 0 ; j < 16 ; j++)
@@ -108,8 +119,7 @@ create_layout (GtkWidget *vbox)
        else
          button = gtk_label_new (buf);
 
-       gtk_layout_put (GTK_LAYOUT (layout), button,
-                       j * 100, i * 100);
+       gtk_layout_put (layout, button, j * 100, i * 100);
       }
 
   for (i = 16; i < 1280; i++)
@@ -121,8 +131,7 @@ create_layout (GtkWidget *vbox)
       else
        button = gtk_label_new (buf);
 
-      gtk_layout_put (GTK_LAYOUT (layout), button,
-                     0, i * 100);
+      gtk_layout_put (layout, button, 0, i * 100);
     }
 
   layout_timeout = g_timeout_add (1000, scroll_layout, layout);
@@ -186,27 +195,26 @@ create_widgets (void)
   GtkWidget *main_hbox, *main_vbox;
   GtkWidget *vbox, *hbox, *label, *combo, *entry, *button, *cb;
   GtkWidget *sw, *text_view;
-  GList *cbitems = NULL;
 
-  main_vbox = gtk_vbox_new (0, FALSE);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
 
-  main_hbox = gtk_hbox_new (0, FALSE);
+  main_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
   gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, TRUE, TRUE, 0);
 
-  vbox = gtk_vbox_new (0, FALSE);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_box_pack_start (GTK_BOX (main_hbox), vbox, TRUE, TRUE, 0);
 
-  hbox = gtk_hbox_new (0, FALSE);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
 
   label = gtk_label_new ("This label may be ellipsized\nto make it fit.");
   gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
 
-  combo = gtk_combo_box_new_text ();
-  gtk_combo_box_append_text (GTK_COMBO_BOX (combo), "NONE");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (combo), "START");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (combo), "MIDDLE");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (combo), "END");
+  combo = gtk_combo_box_text_new ();
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "NONE");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "START");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "MIDDLE");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "END");
   gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
   gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
 
@@ -228,14 +236,19 @@ create_widgets (void)
   button = gtk_check_button_new_with_mnemonic ("_Check button");
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
-  cb = gtk_combo_new ();
-  cbitems = g_list_append (cbitems, "item0");
-  cbitems = g_list_append (cbitems, "item1 item1");
-  cbitems = g_list_append (cbitems, "item2 item2 item2");
-  gtk_combo_set_popdown_strings (GTK_COMBO (cb), cbitems);
-  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (cb)->entry), "hello world ♥ foo");
-  gtk_editable_select_region (GTK_EDITABLE (GTK_COMBO (cb)->entry),
-                             0, -1);
+  cb = gtk_combo_box_text_new ();
+  entry = gtk_entry_new ();
+  gtk_widget_show (entry);
+  gtk_container_add (GTK_CONTAINER (cb), entry);
+
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), "item0");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), "item1");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), "item1");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), "item2");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), "item2");
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), "item2");
+  gtk_entry_set_text (GTK_ENTRY (entry), "hello world ♥ foo");
+  gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
   gtk_box_pack_start (GTK_BOX (vbox), cb, TRUE, TRUE, 0);
 
   sw = gtk_scrolled_window_new (NULL, NULL);
@@ -293,12 +306,11 @@ main (int   argc,
                     G_CALLBACK (gtk_main_quit),
                     NULL);
 
-  vbox = gtk_vbox_new (0, FALSE);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (window), vbox);
 
-  scale = gtk_hscale_new_with_range (0,
-                                    G_PI * 2,
-                                    0.01);
+  scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
+                                    0, G_PI * 2, 0.01);
   gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Remove child 2");
@@ -314,7 +326,7 @@ main (int   argc,
     }
   else
     {
-      offscreen = gtk_vpaned_new ();
+      offscreen = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
     }
 
   gtk_box_pack_start (GTK_BOX (vbox), offscreen, TRUE, TRUE, 0);
@@ -338,7 +350,7 @@ main (int   argc,
                         G_CALLBACK (scale_changed),
                         offscreen2);
 
-      box2 = gtk_vbox_new (FALSE, 0);
+      box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
       gtk_offscreen_box_add2 (GTK_OFFSCREEN_BOX (offscreen2), box2);
 
       widget2 = gtk_button_new_with_label ("Offscreen in offscreen");
@@ -360,21 +372,6 @@ main (int   argc,
                     G_CALLBACK (remove_clicked),
                     widget);
 
-  /* redirect */
-  if (0)
-    {
-      GtkWidget *redirect_win;
-
-      redirect_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-      gtk_window_set_default_size (GTK_WINDOW (redirect_win), 400,400);
-      gtk_widget_show (redirect_win);
-      gtk_widget_realize (redirect_win);
-      gtk_widget_realize (window);
-      gdk_window_redirect_to_drawable (window->window,
-                                      GDK_DRAWABLE (redirect_win->window),
-                                      0, 0, 0, 0, -1, -1);
-    }
-
   gtk_main ();
 
   return 0;