GtkTextView 커서 움직이기? 혹은 scroll 움직이기

freedom의 이미지

안녕하세요 gtk 를 공부하고 있는 학생입니다..

GtkTextView 를 이용해서

알ftp 의 상태창 처럼 새로운 내용이 추가 될때마다

포커스 혹은 커서가 최근 내용을 가리키게 하고 싶은데..

어떻게 해야 할지 모르겠네요..

시그널에서는 "move cursor" 라는 시그널이 있는데.. 이건

커서가 이동될때 발생하는 시그널 같고

그렇다고 scroll (textview 를 scrolledwindow 에 넣었습니다.)을 움직이려고 했는데

그렇다할 것을 찾지 못했습니다..

새로운 내용을 추가할때마다 (gtk_text_buffer_set_text 이용)

맨 상위가 포커스가 되네요..ㅠㅠ

keizie의 이미지

devhelp를 찾아보시면 자세한 함수를 알 수 있습니다.

1. 텍스트 내용이 바뀌는 시그널을 잡아서
2. 바뀐 이후 end iter를 확보하고
3. scroll to iter로 end까지 scroll 합니다.

이때 구현상의 주의점이 있었는데, gaim에서 이 기능을 쓰고 있으니 그쪽 코드를 살펴보세요.

cinsk의 이미지

오래되서 잘 기억은 나지 않지만.. selection(현재 선택된 내용)을 이동해서 커서를 이동시켰던 것으로 기억합니다. 아마도 gtk_*_set_selection_*()식의 함수이던지 아니면 *_place_cursor() 식의 함수를 찾아보기 바랍니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

freedom의 이미지

우선 kz 님, cinsk 님의 조언 감사드립니다.

두분 말씀중 kz 님의 말씀이 잘이해가 되서 아래와 같이 구현했는데

여기서 문제가 생겼습니다..

void move_scroll_to_end(GtkTextView* textview)
{
GtkTextIter end;
// end iter 구함
gtk_text_buffer_get_end_iter(textbuffer_console, &end);

// scroll 을 end iter 까지 x - center, y - right 로 이동
gtk_text_view_scroll_to_iter(textview, &end, 1, TRUE, 0.0, 1.0);

}

여기서 문제가 되는것이 스크롤이 내려가다 만다는 점입니다..

예를 들어 스크롤을 아래의 화살표를 이용 내렸을때 2칸 정도의 공간을 남기고

이동한다는 점입니다..

TextBuffer 의 내용은 gchar* 로부터 문자열을 입력을 받아서 넣은것입니다.

혹시나 '\n' 등의 문자열이 문제인가 싶어서 빼보기도 했는데 잘 안되더군요,

또한가지 kz 님께서 말씀하신 gaim 이 어떤건지 잘 모르겠습니다..

다시한번 답변 부탁드립니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.