Connecting Tech Pros Worldwide Forums | Help | Site Map

gtk+-2.0, GtkEntry - set cursor problems.

jnakam@gmail.com
Guest
 
Posts: n/a
#1: Apr 21 '07
Hi,

Im trying to get the gtk_editable_set_position to work. I have a
gtkEntry text box and i first enter "12378978987913".

When I press '4' I expect the cursor to move to the fourth position

gtk_editable_set_position
(GTK_EDITABLE((GtkEntry*)user_data), 4);

But the cursor stays in the same position. Anyone know whats going on?
Depricated gtk_entry_set_position doesnt work either.

Thanks

---------------------------------------------------------------------------------------------
gcc helloworld.c -o base `pkg-config --cflags --libs gtk+-2.0`
=================================================
The code : (basic helloworld)
----------------------------------------------------------------------------------------------------
#include <gtk/gtk.h>
#include <stdio.h>

/* This is a callback function. The data arguments are ignored
* in this example. More on callbacks below. */
static void hello( GtkWidget *widget,
gpointer data )
{
g_print ("Hello World\n");
}

static gboolean delete_event( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
/* If you return FALSE in the "delete_event" signal handler,
* GTK will emit the "destroy" signal. Returning TRUE means
* you don't want the window to be destroyed.
* This is useful for popping up 'are you sure you want to quit?'
* type dialogs. */

g_print ("delete event occurred\n");

/* Change TRUE to FALSE and the main window will be destroyed with
* a "delete_event". */

return FALSE;
}

static void
handleGtkTextInsertCb(
GtkEditable *editable,
gchar *new_text,
gint new_text_length,
gint *position,
gpointer user_data)
{
printf("insert <%spos %d len %d\n",
new_text, *position, new_text_length);

if('4' == new_text[0])
{
printf("set pos 4\n");
gtk_editable_set_position
(GTK_EDITABLE((GtkEntry*)user_data), 4);
}
if('5' == new_text[0])
{
printf("set pos 5\n");
gtk_editable_set_position
(GTK_EDITABLE((GtkEntry*)user_data), 5);
}
}

/* Another callback */
static void destroy( GtkWidget *widget,
gpointer data )
{
gtk_main_quit ();
}

int main( int argc,
char *argv[] )
{
/* GtkWidget is the storage type for widgets */
GtkWidget *window;
GtkWidget *button;
GtkWidget *text;

/* This is called in all GTK applications. Arguments are parsed
* from the command line and are returned to the application. */
gtk_init (&argc, &argv);

/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

/* When the window is given the "delete_event" signal (this is
given
* by the window manager, usually by the "close" option, or on the
* titlebar), we ask it to call the delete_event () function
* as defined above. The data passed to the callback
* function is NULL and is ignored in the callback function. */
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (delete_event), NULL);

/* Here we connect the "destroy" event to a signal handler.
* This event occurs when we call gtk_widget_destroy() on the
window,
* or if we return FALSE in the "delete_event" callback. */
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (destroy), NULL);

/* Sets the border width of the window. */
gtk_container_set_border_width (GTK_CONTAINER (window), 10);

/* Creates a new button with the label "Hello World". */
button = gtk_button_new_with_label ("Hello World");
text = gtk_entry_new ();
// text = gtk_text_view_new ();

/* When the button receives the "clicked" signal, it will call the
* function hello() passing it NULL as its argument. The hello()
* function is defined above. */
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (hello), NULL);

/* This will cause the window to be destroyed by calling
* gtk_widget_destroy(window) when "clicked". Again, the destroy
* signal could come from here, or the window manager. */
g_signal_connect_swapped (G_OBJECT (button), "clicked",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (window));

g_signal_connect (G_OBJECT (text),
"insert_text",
G_CALLBACK (handleGtkTextInsertCb),
(gpointer)text);

/* This packs the button into the window (a gtk container). */
// gtk_container_add (GTK_CONTAINER (window), button);
gtk_container_add (GTK_CONTAINER (window), text);

/* The final step is to display this newly created widget. */
gtk_widget_show (button);
gtk_widget_show (text);

/* and the window */
gtk_widget_show (window);

/* All GTK applications must have a gtk_main(). Control ends here
* and waits for an event to occur (like a key press or
* mouse event). */
gtk_main ();

return 0;
}


llothar
Guest
 
Posts: n/a
#2: Apr 22 '07

re: gtk+-2.0, GtkEntry - set cursor problems.


>
Quote:
Im trying to get the gtk_editable_set_position to work. I have a
gtkEntry text box and i first enter "12378978987913".
This is very Off-Topic here. Try the GTK mailing list.


fabricio.b.cabral@gmail.com
Guest
 
Posts: n/a
#3: Apr 22 '07

re: gtk+-2.0, GtkEntry - set cursor problems.


On Apr 21, 10:18 pm, llothar <llot...@web.dewrote:
Quote:
Quote:
Im trying to get the gtk_editable_set_position to work. I have a
gtkEntry text box and i first enter "12378978987913".
>
This is very Off-Topic here. Try the GTK mailing list.
The correct list is gtk-app-devel-list.

Closed Thread