From fe219a6e257ce4e30f4304a2fa0a7719ab763f5e Mon Sep 17 00:00:00 2001 From: eidheim Date: Sat, 9 Jan 2016 09:32:58 +0100 Subject: [PATCH] Making frame variable smaller if it is too long when using backtrace, and dialogs are now moved to the start of line if activated on iter columns>=80 --- src/source_clang.cc | 2 ++ src/window.cc | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/source_clang.cc b/src/source_clang.cc index e3f8982..c1a7210 100644 --- a/src/source_clang.cc +++ b/src/source_clang.cc @@ -1195,6 +1195,8 @@ Source::ClangViewAutocomplete(file_path, project_path, language) { goto_method=[this](){ if(parsed) { auto iter=get_buffer()->get_insert()->get_iter(); + if(iter.get_line_offset()>=80) + iter=get_buffer()->get_iter_at_line(iter.get_line()); Gdk::Rectangle visible_rect; get_visible_rect(visible_rect); Gdk::Rectangle iter_rect; diff --git a/src/window.cc b/src/window.cc index 84290ca..7f675bd 100644 --- a/src/window.cc +++ b/src/window.cc @@ -514,6 +514,8 @@ void Window::set_menu_actions() { auto token=current_view->get_token(); if(token) { auto iter=current_view->get_buffer()->get_insert()->get_iter(); + if(iter.get_line_offset()>=80) + iter=current_view->get_buffer()->get_iter_at_line(iter.get_line()); Gdk::Rectangle visible_rect; current_view->get_visible_rect(visible_rect); Gdk::Rectangle iter_rect; @@ -898,6 +900,8 @@ void Window::set_menu_actions() { auto view=notebook.get_current_view(); auto buffer=view->get_buffer(); auto iter=buffer->get_insert()->get_iter(); + if(iter.get_line_offset()>=80) + iter=buffer->get_iter_at_line(iter.get_line()); Gdk::Rectangle visible_rect; view->get_visible_rect(visible_rect); Gdk::Rectangle iter_rect; @@ -913,11 +917,16 @@ void Window::set_menu_actions() { for(auto &frame: backtrace) { std::string row=""+frame.module_filename+""; + + //Shorten frame.function_name if it is too long + if(frame.function_name.size()>120) { + frame.function_name=frame.function_name.substr(0, 58)+"...."+frame.function_name.substr(frame.function_name.size()-58); + } if(frame.file_path.empty()) - row+=" - "+frame.function_name; + row+=" - "+Glib::Markup::escape_text(frame.function_name); else { auto file_path=boost::filesystem::path(frame.file_path).filename().string(); - row+=":"+Glib::Markup::escape_text(file_path)+":"+std::to_string(frame.line_nr)+" - "+Glib::Markup::escape_text(frame.function_name); + row+=":"+Glib::Markup::escape_text(file_path)+":"+std::to_string(frame.line_nr)+" - "+Glib::Markup::escape_text(frame.function_name); } (*rows)[row]=frame; view->selection_dialog->add_row(row);