RE: how to justify text in a GtkTextView -- workaround



A work-around for this in GTK 2.2.4 has been found.  Adding the line

        gtk_text_view_set_wrap_mode(view, GTK_WRAP_WORD);

just before the call of gtk_text_view_set_justification causes the
justification to work.  A co-worker reminded me that we had seen similar
behavior -- Pango layout center and right justification only works when
wrapping is turned on.

-----Original Message-----
From: Boncek, John 
Sent: Tuesday, February 01, 2005 11:52 AM
To: 'Paolo Costabel'
Cc: gtk-app-devel-list gnome org
Subject: RE: how to justify text in a GtkTextView


Indeed it does.  Thanks.  I get it all the way at the left edge running on
both SuSE 9.1 and on MontaVista Linux.  May be a bug in 2.2.4.
Unfortunately, it may not be practical for me to update to a later version
any time soon.

-----Original Message-----
From: Paolo Costabel [mailto:paolo zebradevelopment com]
Sent: Tuesday, February 01, 2005 11:27 AM
To: Boncek, John
Cc: gtk-app-devel-list gnome org
Subject: Re: how to justify text in a GtkTextView


I have attached a snapshot of your test program. Looks centered to me. 
I'm using Gtk 2.4.10.

Boncek, John wrote:

I don't know what that could be.  This is a very simple trial program, to
put a GtkTextView in a scrolled window with justification.

My version of GTK is 2.2.4, as listed by pkg-config.

Here's the entire program, some of which was pieced together from various
online examples:

#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>


int main( int   argc,
         char *argv[] )
{

   GtkWidget *window;
   GtkWidget *vbox;
   GtkWidget *button;

   gtk_init (&argc, &argv);

   // create a new window
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_widget_set_size_request (GTK_WIDGET (window), 300, 300);
   gtk_window_set_title (GTK_WINDOW (window), "GTK Text View");
   g_signal_connect (G_OBJECT (window), "destroy",
                     G_CALLBACK (gtk_main_quit), NULL);
   g_signal_connect_swapped (G_OBJECT (window), "delete_event",
                             G_CALLBACK (gtk_widget_destroy), 
                             G_OBJECT (window));

      // create VBox
   vbox = gtk_vbox_new (FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), vbox);
   gtk_widget_show (vbox);

      /* create a new scrolled window. */
      GtkWidget *             scrolled_window         =
gtk_scrolled_window_new (NULL, NULL);
      /* the policy is one of GTK_POLICY AUTOMATIC, or
GTK_POLICY_ALWAYS.
      * GTK_POLICY_AUTOMATIC will automatically decide whether you need
      * scrollbars, whereas GTK_POLICY_ALWAYS will always leave the
scrollbars
      * there. The first one is the horizontal scrollbar, the second,
      * the vertical. */
      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
(scrolled_window),
      
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
      gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE,
0);
   gtk_widget_show (scrolled_window);

      // create TextView
      GtkTextView *           view;
      GtkTextBuffer *         buffer;
      view = GTK_TEXT_VIEW(gtk_text_view_new());
      buffer = gtk_text_view_get_buffer(view);
      gtk_text_view_set_justification (view, GTK_JUSTIFY_CENTER);
      gtk_text_buffer_set_text (buffer, "some initial text", -1);
      
//     GtkTextIter             start;
//     GtkTextIter             end;
//
//     gtk_text_buffer_get_start_iter(buffer, &(start));
//     gtk_text_buffer_get_end_iter(buffer, &(end));
//     gtk_text_buffer_remove_all_tags (buffer, &(start), &(end));

      gtk_container_add(GTK_CONTAINER (scrolled_window), (GtkWidget
*)(view)); 
   gtk_widget_show((GtkWidget *)(view));

      // create Close button
   button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
   g_signal_connect_swapped (G_OBJECT (button), "clicked",
                            G_CALLBACK (gtk_widget_destroy),
                            G_OBJECT (window));
   gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
   GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
   gtk_widget_grab_default (button);
   gtk_widget_show (button);
   
   gtk_widget_show (window);

   gtk_main();

   return 0;
}

-----Original Message-----
From: Paolo Costabel [mailto:paolo zebradevelopment com]
Sent: Monday, January 31, 2005 5:42 PM
To: Boncek, John
Cc: gtk-app-devel-list gnome org
Subject: Re: how to justify text in a GtkTextView


Hmm, works fine here. Are you doing something after insterting the text 
that could affect the justification?

Boncek, John wrote:

 

Thanks for your suggestion, which I just tried.  No difference.

-----Original Message-----
From: Paolo Costabel [mailto:paolo zebradevelopment com]
Sent: Monday, January 31, 2005 4:10 PM
To: Boncek, John
Cc: gtk-app-devel-list gnome org
Subject: Re: how to justify text in a GtkTextView


Do

gtk_text_buffer_set_text

after 

gtk_text_view_set_justification

Boncek, John wrote:



   

I can't get text justification to work.  Am I missing something?  Here
     

is
 

a code snippet:

    // create TextView
    GtkTextView *           view;
    GtkTextBuffer *         buffer;
    view = GTK_TEXT_VIEW(gtk_text_view_new());
    buffer = gtk_text_view_get_buffer(view);
    gtk_text_buffer_set_text (buffer, "some initial text", -1);
    
//   GtkTextIter             start;
//   GtkTextIter             end;
//
//   gtk_text_buffer_get_start_iter(buffer, &(start));
//   gtk_text_buffer_get_end_iter(buffer, &(end));
//   gtk_text_buffer_remove_all_tags (buffer, &(start), &(end));
    gtk_text_view_set_justification (view, GTK_JUSTIFY_CENTER);

The text window appears, displays the initial text, and accepts
keyboard
input, etc.  But it comes up left-justified regardless.  I tried
GTK_JUSTIFY_RIGHT also.  I also tried turning off any tags in case any
tags are created by default, as indicated in the currently-commented
section, since the documentation says the justification can be
     

overridden
 

by a tag.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list



  

     



   



 





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]