我正在C中使用GTK +編輯器。我添加了一個顯示當前行號和列表號在光標位置的功能。它的工作很好。但缺點是當我嘗試用箭頭鍵移動光標時,行號和列號不會更新。下面是我的代碼更新行號和列號在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));
}
我想問題是「改變」的信號。由於光標用箭頭鍵移動,緩衝區不會被改變。所以任何人都可以建議我解決問題的更好方法。
在此先感謝:)。
這種感覺是「這是我的代碼,爲我修好。」你有什麼嘗試?你怎麼知道這個問題在這塊代碼中? – Richard
此代碼在緩衝區更改時工作良好。我的狀態欄中的行號和列號發生了變化。我提供我的代碼只是作爲我的問題的參考。 –