static void cb_focus_event(GtkWidget *view, GdkEventFocus *event) { if (!gtk_text_buffer_get_selection_bounds(GTK_TEXT_VIEW(view)->buffer, NULL, NULL)) gtk_text_mark_set_visible( gtk_text_buffer_get_selection_bound( GTK_TEXT_VIEW(view)->buffer), !event->in); if (event->in) menu_sensitivity_from_clipboard(); }
/*# @method set_visible GtkTextMark @brief Sets the visibility of mark. @param setting visibility of mark The insertion point is normally visible, i.e. you can see it as a vertical bar. Also, the text widget uses a visible mark to indicate where a drop will occur when dragging-and-dropping text. Most other marks are not visible. Marks are not visible by default. */ FALCON_FUNC TextMark::set_visible( VMARG ) { Item* i_bool = vm->param( 0 ); #ifndef NO_PARAMETER_CHECK if ( !i_bool || i_bool->isNil() || !i_bool->isBoolean() ) throw_inv_params( "B" ); #endif MYSELF; GET_OBJ( self ); gtk_text_mark_set_visible( (GtkTextMark*)_obj, i_bool->asBoolean() ? TRUE : FALSE ); }
static void cb_button_ok(GtkButton *button, gpointer user_data) { u_int64_t pharr8[MAX_PHRASE_LEN]; int i; for(i=0; i < bigphoN; i++) { int idx = gtk_combo_box_get_active(GTK_COMBO_BOX(bigpho[i].opt_menu)); void *dest = get_ph_key_ptr(pharr8, i); cp_ph_key(bigpho[i].phokeys, idx, dest); } save_phrase_to_db(pharr8, current_str, bigphoN, 0); destroy_pho_sel_area(); GtkTextMark *selebound = gtk_text_buffer_get_selection_bound(buffer); gtk_text_mark_set_visible(selebound, FALSE); cb_button_parse(NULL, NULL); }
static VALUE rg_set_visible(VALUE self, VALUE setting) { gtk_text_mark_set_visible(_SELF(self), RVAL2CBOOL(setting)); return setting; }
gboolean document_search_real(GtkWidget *textview, gint direction) { GtkTextIter iter, match_start, match_end; gboolean res; GtkSourceSearchFlags search_flags = GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_TEXT_ONLY; GtkTextBuffer *textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); if (!string_find) return FALSE; if (!match_case) search_flags = search_flags | GTK_SOURCE_SEARCH_CASE_INSENSITIVE; // if (direction == 0 || !hlight_check_searched()) if (direction == 0 || (direction != 2 && !hlight_check_searched())) hlight_searched_strings(GTK_TEXT_VIEW(textview)->buffer, string_find); gtk_text_mark_set_visible( gtk_text_buffer_get_selection_bound( GTK_TEXT_VIEW(textview)->buffer), FALSE); gtk_text_buffer_get_iter_at_mark(textbuffer, &iter, gtk_text_buffer_get_insert(textbuffer)); if (direction < 0) { res = gtk_source_iter_backward_search( &iter, string_find, search_flags, &match_start, &match_end, NULL); if (gtk_text_iter_equal(&iter, &match_end)) { res = gtk_source_iter_backward_search( &match_start, string_find, search_flags, &match_start, &match_end, NULL); } } else { res = gtk_source_iter_forward_search( &iter, string_find, search_flags, &match_start, &match_end, NULL); } /* TODO: both gtk_(text/source)_iter_backward_search works not fine for multi-byte */ /* wrap */ /* TODO: define limit NULL -> proper value */ if (!res) { if (direction < 0) { gtk_text_buffer_get_end_iter(textbuffer, &iter); res = gtk_source_iter_backward_search( &iter, string_find, search_flags, &match_start, &match_end, NULL); } else { gtk_text_buffer_get_start_iter(textbuffer, &iter); res = gtk_source_iter_forward_search( &iter, string_find, search_flags, &match_start, &match_end, NULL); } } if (res) { gtk_text_buffer_place_cursor(textbuffer, &match_start); gtk_text_buffer_move_mark_by_name(textbuffer, "insert", &match_end); // gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(textview), &match_start, 0.1, FALSE, 0.5, 0.5); scroll_to_cursor(textbuffer, 0.05); } else if (direction == 0) run_dialog_message(gtk_widget_get_toplevel(textview), GTK_MESSAGE_WARNING, _("Search string not found")); return res; }