Changeset a5bbf0a72a201aae5e5de00f6a99c64591c0dd80
- Timestamp:
- 01/04/09 21:49:36 (4 years ago)
- Parents:
- a9b75ca3a13948c179138e53520bf0e2a5a092f9
- Children:
- 582a477ada10ccfcd67c43b50b81318dcdfffd12
- git-committer:
- Armin Burgmeier <armin@arbur.net> / 2009-01-04T21:49:36Z+0100
- Files:
-
- 3 modified
-
ChangeLog (modified) (1 diff)
-
code/core/docwindow.cpp (modified) (2 diffs)
-
code/core/docwindow.hpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
ra9b75ca ra5bbf0a 1 2009-01-04 Armin Burgmeier <armin@arbur.net> 2 3 * code/core/docwindow.hpp: 4 * code/core/docwindow.cpp: Show a tooltip when hovering over text, 5 saying what user wrote the hovered text. 6 1 7 2009-01-04 Armin Burgmeier <armin@arbur.net> 2 8 -
code/core/docwindow.cpp
r4625e17 ra5bbf0a 151 151 g_signal_connect(G_OBJECT(table), "tag-added", 152 152 G_CALLBACK(on_tag_added), this); 153 154 gtk_widget_set_has_tooltip(GTK_WIDGET(m_view), TRUE); 155 g_signal_connect(m_view, "query-tooltip", 156 G_CALLBACK(on_query_tooltip_static), this); 153 157 154 158 gtk_text_view_set_buffer(GTK_TEXT_VIEW(m_view), … … 525 529 } 526 530 } 531 532 bool 533 Gobby::DocWindow::on_query_tooltip(int x, int y, bool keyboard_mode, 534 const Glib::RefPtr<Gtk::Tooltip>& tooltip) 535 { 536 if(keyboard_mode) return false; 537 538 int buffer_x, buffer_y; 539 gtk_text_view_window_to_buffer_coords( 540 GTK_TEXT_VIEW(m_view), 541 GTK_TEXT_WINDOW_WIDGET, x, y, &buffer_x, &buffer_y); 542 543 // Pointer is in line number display 544 if(buffer_x < 0) return false; 545 546 // Get the character at the mouse position 547 GtkTextIter iter; 548 int trailing; 549 gtk_text_view_get_iter_at_position( 550 GTK_TEXT_VIEW(m_view), &iter, &trailing, buffer_x, buffer_y); 551 552 // Don't show a tooltip if the character is a newline character */ 553 //if(gtk_text_iter_is_end(&iter)) return false; 554 if(gtk_text_iter_ends_line(&iter)) return false; 555 556 // Don't show a tooltip if we are past the end of the line 557 GdkRectangle newline_location; 558 GtkTextIter line_end = iter; 559 gtk_text_iter_forward_to_line_end(&line_end); 560 gtk_text_view_get_iter_location( 561 GTK_TEXT_VIEW(m_view), &line_end, &newline_location); 562 563 if(buffer_x >= newline_location.x && 564 buffer_y >= newline_location.y) 565 { 566 return false; 567 } 568 569 InfTextGtkBuffer* buffer = INF_TEXT_GTK_BUFFER( 570 inf_session_get_buffer(INF_SESSION(m_session))); 571 572 InfTextUser* author = inf_text_gtk_buffer_get_author(buffer, &iter); 573 if(author != NULL) 574 { 575 tooltip->set_markup(Glib::ustring::compose( 576 _("Text written by <b>%1</b>"), 577 Glib::Markup::escape_text( 578 inf_user_get_name(INF_USER(author))))); 579 } 580 else 581 { 582 tooltip->set_text(_("Unowned text")); 583 } 584 585 return true; 586 } -
code/core/docwindow.hpp
r4d4ee96 ra5bbf0a 110 110 void on_pref_userlist_width_changed(); 111 111 112 bool on_query_tooltip(int x, int y, bool keyboard_mode, 113 const Glib::RefPtr<Gtk::Tooltip>& tooltip); 114 115 static gboolean on_query_tooltip_static(GtkWidget* widget, int x, 116 int y, gboolean keyboard_mode, 117 GtkTooltip* tooltip, 118 gpointer user_data) 119 { 120 return static_cast<DocWindow*>(user_data)->on_query_tooltip( 121 x, y, keyboard_mode, Glib::wrap(tooltip, true)); 122 } 123 112 124 InfTextSession* m_session; 113 125 Glib::ustring m_title;
