gtk+-2.0, GtkEntry - set cursor problems.

J

jnakam

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 <%s> pos %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;
}
 
L

llothar

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top