Browse Source

Finally fixed the scrolling issue in terminal.

merge-requests/365/head
eidheim 10 years ago
parent
commit
c73a86f728
  1. 19
      src/terminal.cc
  2. 1
      src/terminal.h

19
src/terminal.cc

@ -117,14 +117,6 @@ Terminal::Terminal() {
});
async_print_dispatcher.connect([this](){
async_print_on_line_strings_mutex.lock();
if(async_print_on_line_strings.size()>0) {
for(auto &string: async_print_on_line_strings)
print(string.first, string.second);
async_print_on_line_strings.clear();
}
async_print_on_line_strings_mutex.unlock();
async_print_strings_mutex.lock();
if(async_print_strings.size()>0) {
for(auto &string_bold: async_print_strings)
@ -133,6 +125,15 @@ Terminal::Terminal() {
}
async_print_strings_mutex.unlock();
});
async_print_on_line_dispatcher.connect([this](){
async_print_on_line_strings_mutex.lock();
if(async_print_on_line_strings.size()>0) {
for(auto &line_string: async_print_on_line_strings)
print(line_string.first, line_string.second);
async_print_on_line_strings.clear();
}
async_print_on_line_strings_mutex.unlock();
});
}
int Terminal::execute(const std::string &command, const boost::filesystem::path &path) {
@ -327,7 +328,7 @@ void Terminal::async_print(int line_nr, const std::string &message) {
async_print_on_line_strings.emplace_back(line_nr, message);
async_print_on_line_strings_mutex.unlock();
if(dispatch)
async_print_dispatcher();
async_print_on_line_dispatcher();
}
bool Terminal::on_key_press_event(GdkEventKey *event) {

1
src/terminal.h

@ -45,6 +45,7 @@ protected:
bool on_key_press_event(GdkEventKey *event);
private:
Glib::Dispatcher async_print_dispatcher;
Glib::Dispatcher async_print_on_line_dispatcher;
std::vector<std::pair<std::string, bool> > async_print_strings;
std::vector<std::pair<int, std::string> > async_print_on_line_strings;
std::mutex async_print_strings_mutex;

Loading…
Cancel
Save