Skip to content

Commit a513d46

Browse files
Changed auto-complete method to one fake event
1 parent 6bde7a5 commit a513d46

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

vpr/main.ui

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,7 @@
610610
<property name="visible">True</property>
611611
<property name="can_focus">True</property>
612612
<property name="receives_default">True</property>
613+
<property name="halign">end</property>
613614
<property name="image_position">right</property>
614615
</object>
615616
<packing>
@@ -797,6 +798,24 @@
797798
<child>
798799
<placeholder/>
799800
</child>
801+
<child>
802+
<placeholder/>
803+
</child>
804+
<child>
805+
<placeholder/>
806+
</child>
807+
<child>
808+
<placeholder/>
809+
</child>
810+
<child>
811+
<placeholder/>
812+
</child>
813+
<child>
814+
<placeholder/>
815+
</child>
816+
<child>
817+
<placeholder/>
818+
</child>
800819
</object>
801820
</child>
802821
</object>

vpr/src/draw/draw.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,9 @@ void act_on_key_press(ezgl::application* app, GdkEventKey* /*event*/, char* key_
693693
GtkWidget* searchBar = GTK_WIDGET(app->get_object("TextInput"));
694694
if(gtk_widget_is_focus(searchBar)){
695695
if(key == "Return"){
696+
std::string oldText(gtk_entry_get_text(GTK_ENTRY(searchBar)));
696697
enable_autocomplete(app);
698+
gtk_editable_set_position(GTK_EDITABLE(searchBar), oldText.length());
697699
}
698700
}
699701
}

vpr/src/draw/search_bar.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -457,29 +457,33 @@ void enable_autocomplete(ezgl::application* app){
457457
std::cout << "NO MODEL SELECTED" << std::endl;
458458
return;
459459
}
460+
std::string oldText(gtk_entry_get_text(searchBar));
460461
gtk_entry_set_completion(searchBar, completion);
461-
gtk_entry_completion_set_minimum_key_length(completion, 1);
462+
gtk_entry_completion_set_minimum_key_length(completion, std::max(0, (int)(oldText.length()-1)));
462463
gtk_entry_completion_complete(completion);
463-
std::string oldText(gtk_entry_get_text(searchBar));
464+
464465
if(oldText.length() == 0) return;
465466

466-
//gtk_entry_set_text(searchBar, "");
467-
468-
for(int i = 0; i < oldText.length(); ++i){
469-
gtk_widget_grab_focus(GTK_WIDGET(searchBar));
467+
468+
std::cout << "Added text" << std::endl;
469+
gtk_widget_grab_focus(GTK_WIDGET(searchBar));
470+
std::string newText = (oldText.length() > 1)? oldText.substr(0, oldText.length()-1) : "";
471+
gtk_entry_set_text(searchBar, newText.c_str());
472+
// for(int i = 0; i < oldText.length(); ++i){
473+
470474
GdkEvent new_event;
471475
new_event.key.type = GDK_KEY_PRESS;
472476
new_event.key.window = gtk_widget_get_parent_window(GTK_WIDGET(searchBar));
473477
new_event.key.send_event = TRUE;
474478
new_event.key.time = GDK_CURRENT_TIME;
475-
new_event.key.keyval = gdk_unicode_to_keyval((int)oldText[i]);
479+
new_event.key.keyval = gdk_unicode_to_keyval((int)oldText[oldText.length()-1]);
476480
new_event.key.state = GDK_KEY_PRESS_MASK;
477481
new_event.key.length = 0;
478482
new_event.key.string = 0;
479483
new_event.key.hardware_keycode = 0;
480484
new_event.key.group = 0;
481485
gdk_event_put(&new_event);
482-
}
486+
//}
483487
}
484488

485489

0 commit comments

Comments
 (0)