X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=tests%2Ftestselection.c;h=eda61ef8c212710d7b1af7a6ccf461fd15be9b5b;hb=HEAD;hp=cd1817369768fd13c326e1f4de647b85c3877e5c;hpb=57223c9a056bfff1635ddd1e67f660cd5a61e9ff;p=~andy%2Fgtk diff --git a/tests/testselection.c b/tests/testselection.c index cd1817369..eda61ef8c 100644 --- a/tests/testselection.c +++ b/tests/testselection.c @@ -12,9 +12,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* @@ -24,12 +22,10 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ -#undef GTK_DISABLE_DEPRECATED #include "config.h" #include #include -#define GTK_ENABLE_BROKEN #include "gtk/gtk.h" typedef enum { @@ -142,7 +138,7 @@ init_atoms (void) void selection_toggled (GtkWidget *widget) { - if (GTK_TOGGLE_BUTTON(widget)->active) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) { have_selection = gtk_selection_owner_set (selection_widget, GDK_SELECTION_PRIMARY, @@ -154,7 +150,7 @@ selection_toggled (GtkWidget *widget) { if (have_selection) { - if (gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == widget->window) + if (gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == gtk_widget_get_window (widget)) gtk_selection_owner_set (NULL, GDK_SELECTION_PRIMARY, GDK_CURRENT_TIME); have_selection = FALSE; @@ -267,23 +263,28 @@ stringify_span (guchar *data, gint *position) } void -selection_received (GtkWidget *widget, GtkSelectionData *data) +selection_received (GtkWidget *widget, GtkSelectionData *selection_data) { int position; int i; SelType seltype; char *str; - - if (data->length < 0) + guchar *data; + GtkTextBuffer *buffer; + GdkAtom type; + + if (gtk_selection_data_get_length (selection_data) < 0) { g_print("Error retrieving selection\n"); return; } + type = gtk_selection_data_get_data_type (selection_data); + seltype = SEL_TYPE_NONE; for (i=0; itype) + if (seltypes[i] == type) { seltype = i; break; @@ -292,7 +293,7 @@ selection_received (GtkWidget *widget, GtkSelectionData *data) if (seltype == SEL_TYPE_NONE) { - char *name = gdk_atom_name (data->type); + char *name = gdk_atom_name (type); g_print("Don't know how to handle type: %s\n", name?name:""); return; @@ -303,57 +304,51 @@ selection_received (GtkWidget *widget, GtkSelectionData *data) selection_string = g_string_new (NULL); - gtk_text_freeze (GTK_TEXT (selection_text)); - gtk_text_set_point (GTK_TEXT (selection_text), 0); - gtk_text_forward_delete (GTK_TEXT (selection_text), - gtk_text_get_length (GTK_TEXT (selection_text))); + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (selection_text)); + gtk_text_buffer_set_text (buffer, "", -1); position = 0; - while (position < data->length) + while (position < gtk_selection_data_get_length (selection_data)) { + data = (guchar *) gtk_selection_data_get_data (selection_data); switch (seltype) { case ATOM: - str = stringify_atom (data->data, &position); + str = stringify_atom (data, &position); break; case COMPOUND_TEXT: case STRING: case TEXT: - str = stringify_text (data->data, &position); + str = stringify_text (data, &position); break; case BITMAP: case DRAWABLE: case PIXMAP: case WINDOW: case COLORMAP: - str = stringify_xid (data->data, &position); + str = stringify_xid (data, &position); break; case INTEGER: case PIXEL: - str = stringify_integer (data->data, &position); + str = stringify_integer (data, &position); break; case SPAN: - str = stringify_span (data->data, &position); + str = stringify_span (data, &position); break; default: { - char *name = gdk_atom_name (data->type); + char *name = gdk_atom_name (gtk_selection_data_get_data_type (selection_data)); g_print("Can't convert type %s to string\n", name?name:""); - position = data->length; + position = gtk_selection_data_get_length (selection_data); continue; } } - gtk_text_insert (GTK_TEXT (selection_text), NULL, - &selection_text->style->black, - NULL, str, -1); - gtk_text_insert (GTK_TEXT (selection_text), NULL, - &selection_text->style->black, - NULL, "\n", -1); + gtk_text_buffer_insert_at_cursor (buffer, str, -1); + gtk_text_buffer_insert_at_cursor (buffer, "\n", -1); g_string_append (selection_string, str); g_free (str); } - gtk_text_thaw (GTK_TEXT (selection_text)); } void @@ -378,20 +373,20 @@ paste (GtkWidget *widget, GtkWidget *entry) void quit (void) { - gtk_exit (0); + gtk_main_quit (); } int main (int argc, char *argv[]) { + GtkWidget *action_area, *content_area; GtkWidget *dialog; GtkWidget *button; - GtkWidget *table; + GtkWidget *vbox; GtkWidget *label; GtkWidget *entry; - GtkWidget *hscrollbar; - GtkWidget *vscrollbar; GtkWidget *hbox; + GtkWidget *scrolled; static GtkTargetEntry targetlist[] = { { "STRING", 0, STRING }, @@ -413,20 +408,17 @@ main (int argc, char *argv[]) g_signal_connect (dialog, "destroy", G_CALLBACK (quit), NULL); - table = gtk_table_new (4, 2, FALSE); - gtk_container_set_border_width (GTK_CONTAINER(table), 10); + content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); + action_area = gtk_dialog_get_action_area (GTK_DIALOG (dialog)); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 10); - gtk_table_set_row_spacing (GTK_TABLE (table), 0, 5); - gtk_table_set_row_spacing (GTK_TABLE (table), 1, 2); - gtk_table_set_row_spacing (GTK_TABLE (table), 2, 2); - gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), - table, TRUE, TRUE, 0); - gtk_widget_show (table); + gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); selection_button = gtk_toggle_button_new_with_label ("Claim Selection"); - gtk_table_attach (GTK_TABLE (table), selection_button, 0, 2, 0, 1, - GTK_EXPAND | GTK_FILL, 0, 0, 0); + gtk_container_add (GTK_CONTAINER (vbox), selection_button); gtk_widget_show (selection_button); g_signal_connect (selection_button, "toggled", @@ -442,23 +434,14 @@ main (int argc, char *argv[]) g_signal_connect (selection_widget, "selection_get", G_CALLBACK (selection_get), NULL); - selection_text = gtk_text_new (NULL, NULL); - gtk_table_attach_defaults (GTK_TABLE (table), selection_text, 0, 1, 1, 2); + selection_text = gtk_text_view_new (); + scrolled = gtk_scrolled_window_new (NULL, NULL); + gtk_container_add (GTK_CONTAINER (scrolled), selection_text); + gtk_container_add (GTK_CONTAINER (vbox), scrolled); gtk_widget_show (selection_text); - - hscrollbar = gtk_hscrollbar_new (GTK_TEXT (selection_text)->hadj); - gtk_table_attach (GTK_TABLE (table), hscrollbar, 0, 1, 2, 3, - GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); - gtk_widget_show (hscrollbar); - - vscrollbar = gtk_vscrollbar_new (GTK_TEXT (selection_text)->vadj); - gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 1, 2, - GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_show (vscrollbar); - - hbox = gtk_hbox_new (FALSE, 2); - gtk_table_attach (GTK_TABLE (table), hbox, 0, 2, 3, 4, - GTK_EXPAND | GTK_FILL, 0, 0, 0); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); + gtk_container_add (GTK_CONTAINER (vbox), hbox); gtk_widget_show (hbox); label = gtk_label_new ("Target:"); @@ -471,15 +454,13 @@ main (int argc, char *argv[]) /* .. And create some buttons */ button = gtk_button_new_with_label ("Paste"); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->action_area), - button, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (action_area), button, TRUE, TRUE, 0); g_signal_connect (button, "clicked", G_CALLBACK (paste), entry); gtk_widget_show (button); button = gtk_button_new_with_label ("Quit"); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->action_area), - button, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (action_area), button, TRUE, TRUE, 0); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), dialog);