CでGTK+エディターを使用しています。テキストビューにカーソル位置の現在の行番号と列番号を表示する機能を追加しました。そのうまく機能しています。ただし、矢印キーを使用してカーソルを移動しようとすると、行番号と列番号が更新されないという欠点があります。以下は、行番号と列番号を更新するための私のコードです
update_statusbar(GtkTextBuffer *buffer,GtkStatusbar *statusbar)
{
gchar *msg;
gint row, col;
GtkTextIter iter;
gtk_statusbar_pop(statusbar, 0);
g_print("c");
gtk_text_buffer_get_iter_at_mark(buffer,
&iter, gtk_text_buffer_get_insert(buffer));
row = gtk_text_iter_get_line(&iter);
col = gtk_text_iter_get_line_offset(&iter);
msg = g_strdup_printf("Col %d Ln %d", col+1, row+1);
gtk_statusbar_push(statusbar, 0, msg);
g_free(msg);
}
int main ( int argc, char *argv[])
{
.
.
.
.
.
.
g_signal_connect(buffer, "changed", G_CALLBACK(update_statusbar), statusbar);
update_statusbar(buffer, GTK_STATUSBAR (statusbar));
}
問題は「変更された」信号にあると思います。カーソルは矢印キーで移動するため、バッファは変更されません。だから誰かが私に問題を解決するためのより良い方法を提案できますか?
前もって感謝します :)。