comparison libgui/src/octave-qt-link.cc @ 20132:d7bea5b11fc3

only update file browser and dir selection box when on top-level (bug #44622) * main-window.cc (change_directory_callback): call function for updating gui * octave-qt-link.cc (octave_qt_link): init new variables _current_directory and _new_dir; (do_change_directory): only store current dir and new state, no gui update; (update_directory): new function updating gui and clearing new dir state; (do_set_workspace): when on top level and new dir state, update gui * octave-qt-link.h: new update function, new variables for dir and state
author Torsten <ttl@justmail.de>
date Sat, 25 Apr 2015 19:43:27 +0200
parents c36f2b083613
children 46fb763e5f3a
comparison
equal deleted inserted replaced
20131:0d56160e346d 20132:d7bea5b11fc3
45 45
46 octave_qt_link::octave_qt_link (QWidget *p) 46 octave_qt_link::octave_qt_link (QWidget *p)
47 : octave_link (), main_thread (new QThread ()), 47 : octave_link (), main_thread (new QThread ()),
48 command_interpreter (new octave_interpreter ()) 48 command_interpreter (new octave_interpreter ())
49 { 49 {
50 _current_directory = "";
51 _new_dir = true;
52
50 connect (this, SIGNAL (execute_interpreter_signal (void)), 53 connect (this, SIGNAL (execute_interpreter_signal (void)),
51 command_interpreter, SLOT (execute (void))); 54 command_interpreter, SLOT (execute (void)));
52 55
53 connect (command_interpreter, SIGNAL (octave_ready_signal ()), 56 connect (command_interpreter, SIGNAL (octave_ready_signal ()),
54 p, SLOT (handle_octave_ready ())); 57 p, SLOT (handle_octave_ready ()));
429 } 432 }
430 433
431 void 434 void
432 octave_qt_link::do_change_directory (const std::string& dir) 435 octave_qt_link::do_change_directory (const std::string& dir)
433 { 436 {
434 emit change_directory_signal (QString::fromStdString (dir)); 437 _current_directory = QString::fromStdString (dir);
438 _new_dir = true;
439 }
440
441 void
442 octave_qt_link::update_directory ()
443 {
444 emit change_directory_signal (_current_directory);
445 _new_dir = false;
435 } 446 }
436 447
437 void 448 void
438 octave_qt_link::do_execute_command_in_terminal (const std::string& command) 449 octave_qt_link::do_execute_command_in_terminal (const std::string& command)
439 { 450 {
444 octave_qt_link::do_set_workspace (bool top_level, bool debug, 455 octave_qt_link::do_set_workspace (bool top_level, bool debug,
445 const std::list<workspace_element>& ws) 456 const std::list<workspace_element>& ws)
446 { 457 {
447 if (! top_level && ! debug) 458 if (! top_level && ! debug)
448 return; 459 return;
460
461 if (_new_dir)
462 update_directory ();
449 463
450 QString scopes; 464 QString scopes;
451 QStringList symbols; 465 QStringList symbols;
452 QStringList class_names; 466 QStringList class_names;
453 QStringList dimensions; 467 QStringList dimensions;