]> Pileus Git - ~andy/gtk/blobdiff - tests/testoffscreen.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / tests / testoffscreen.c
index ac711f5c26829531bcd1f4f88bc8661649d60d18..62589b5dd8b0d74fc2cf1d092d1ef78eba2ab924 100644 (file)
@@ -20,26 +20,29 @@ 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);
-  cairo_t *cr;
+  GdkRectangle clip;
 
-  gint i,j;
+  gint i, j, x, y;
   gint imin, imax, jmin, jmax;
 
-  if (event->window != 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);
 
-  jmin = (event->area.y) / 10;
-  jmax = (event->area.y + event->area.height + 9) / 10;
+  gdk_cairo_get_clip_rectangle (cr, &clip);
 
-  cr = gdk_cairo_create (bin_window);
+  imin = (clip.x) / 10;
+  imax = (clip.x + clip.width + 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++)
@@ -50,8 +53,6 @@ layout_expose_handler (GtkWidget      *widget,
 
   cairo_fill (cr);
 
-  cairo_destroy (cr);
-
   return FALSE;
 }
 
@@ -61,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;
@@ -95,16 +95,16 @@ create_layout (GtkWidget *vbox)
   /* We set step sizes here since GtkLayout does not set
    * them itself.
    */
-  hadjustment = gtk_layout_get_hadjustment (layout);
-  vadjustment = gtk_layout_get_vadjustment (layout);
+  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_layout_set_hadjustment (layout, hadjustment);
-  gtk_layout_set_vadjustment (layout, vadjustment);
+  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, "expose_event",
-                   G_CALLBACK (layout_expose_handler),
+  g_signal_connect (layout, "draw",
+                   G_CALLBACK (layout_draw_handler),
                     NULL);
 
   gtk_layout_set_size (layout, 1600, 128000);
@@ -196,25 +196,25 @@ create_widgets (void)
   GtkWidget *vbox, *hbox, *label, *combo, *entry, *button, *cb;
   GtkWidget *sw, *text_view;
 
-  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);
 
@@ -236,17 +236,17 @@ 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_box_new_text ();
+  cb = gtk_combo_box_text_new ();
   entry = gtk_entry_new ();
   gtk_widget_show (entry);
   gtk_container_add (GTK_CONTAINER (cb), entry);
 
-  gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "item0");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "item1");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "item1");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "item2");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "item2");
-  gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "item2");
+  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);
@@ -306,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");
@@ -327,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);
@@ -351,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");
@@ -373,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;