Revision: 420 Author: ntrel Date: 2006-06-07 12:25:20 -0700 (Wed, 07 Jun 2006) ViewCVS: http://svn.sourceforge.net/geany/?rev=420&view=rev
Log Message: ----------- Use the character position under the mouse click for Go to definition/declaration and for overridden middle click text paste
Modified Paths: -------------- trunk/ChangeLog trunk/src/callbacks.c trunk/src/sciwrappers.c trunk/src/sciwrappers.h Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-06-07 16:50:41 UTC (rev 419) +++ trunk/ChangeLog 2006-06-07 19:25:20 UTC (rev 420) @@ -2,6 +2,9 @@
* src/callbacks.c: Fixed segfault when inserting comments and no filetype is set. + * src/callbacks.c, src/sciwrappers.c, src/sciwrappers.h: + Use the character position under the mouse click for Go to + definition/declaration and for overridden middle click text paste.
2006-06-06 Enrico Troeger enrico.troeger@uvena.de
Modified: trunk/src/callbacks.c =================================================================== --- trunk/src/callbacks.c 2006-06-07 16:50:41 UTC (rev 419) +++ trunk/src/callbacks.c 2006-06-07 19:25:20 UTC (rev 420) @@ -964,11 +964,13 @@ GdkEventButton *event, gpointer user_data) { + gint idx = GPOINTER_TO_INT(user_data); + gint clickpos = sci_get_position_from_xy(doc_list[idx].sci, event->x, event->y, FALSE);
#ifndef GEANY_WIN32 if (event->button == 1) { - utils_check_disk_status(GPOINTER_TO_INT(user_data)); + utils_check_disk_status(idx); } #endif
@@ -979,12 +981,11 @@
if (gtk_clipboard_wait_is_text_available(cp)) { - gint idx = document_get_cur_idx(); gchar *text = gtk_clipboard_wait_for_text(cp);
- if (idx >= 0 && text != NULL) + if (text != NULL) { - sci_add_text(doc_list[idx].sci, text); + sci_insert_text(doc_list[idx].sci, clickpos, text); g_free(text); return TRUE; } @@ -993,16 +994,12 @@
if (event->button == 3) { - /// TODO pos should possibly be the position of the mouse pointer instead of the - /// current sci position - gint pos = sci_get_current_position(doc_list[GPOINTER_TO_INT(user_data)].sci); + utils_find_current_word(doc_list[idx].sci, clickpos, + current_word, sizeof current_word);
- utils_find_current_word(doc_list[GPOINTER_TO_INT(user_data)].sci, pos, - current_word, sizeof current_word); - utils_update_popup_goto_items((current_word[0] != '\0') ? TRUE : FALSE); - utils_update_popup_copy_items(GPOINTER_TO_INT(user_data)); - utils_update_insert_include_item(GPOINTER_TO_INT(user_data), 0); + utils_update_popup_copy_items(idx); + utils_update_insert_include_item(idx, 0); gtk_menu_popup(GTK_MENU(app->popup_menu), NULL, NULL, NULL, NULL, event->button, event->time);
return TRUE;
Modified: trunk/src/sciwrappers.c =================================================================== --- trunk/src/sciwrappers.c 2006-06-07 16:50:41 UTC (rev 419) +++ trunk/src/sciwrappers.c 2006-06-07 19:25:20 UTC (rev 420) @@ -480,6 +480,13 @@ }
+gint sci_get_position_from_xy(ScintillaObject* sci, gint x, gint y, gboolean nearby) +{ + // for nearby return -1 if there is no character near to the x,y point. + return SSM(sci, (nearby) ? SCI_POSITIONFROMPOINTCLOSE : SCI_POSITIONFROMPOINT, x, y); +} + + void sci_get_xy_from_position(ScintillaObject* sci,gint pos, gint* x, gint* y) { *x = SSM(sci, SCI_POINTXFROMPOSITION,0, (int) pos);
Modified: trunk/src/sciwrappers.h =================================================================== --- trunk/src/sciwrappers.h 2006-06-07 16:50:41 UTC (rev 419) +++ trunk/src/sciwrappers.h 2006-06-07 19:25:20 UTC (rev 420) @@ -81,6 +81,7 @@ gint sci_get_line_length (ScintillaObject* sci, gint line); gint sci_get_line_count ( ScintillaObject* sci ); void sci_get_xy_from_position (ScintillaObject* sci,gint pos, gint* x, gint* y); +gint sci_get_position_from_xy (ScintillaObject* sci, gint x, gint y, gboolean nearby);
void sci_set_undo_collection (ScintillaObject* sci, gboolean set); gboolean sci_get_undo_collection (ScintillaObject* sci);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.