diff --git a/src/interface/Interface_graphic.cpp b/src/interface/Interface_graphic.cpp
index fdc90c957228547e05d5f7937a1f077171bbbd3f..7f620f6ca4b4f5db2085fd083539a312f2fc1c94 100644
--- a/src/interface/Interface_graphic.cpp
+++ b/src/interface/Interface_graphic.cpp
@@ -111,7 +111,6 @@ Interface_graphic::Interface_graphic(Core *core, QWidget *parent) :
     _plugin_window = nullptr;
     _ui_settings = nullptr;
     _ui_node_selection = nullptr;
-    _ui_select_info_window = new SelectInfo(this);
     _ui_interval_selection = nullptr;
 
     // For drag and drop operations
@@ -228,32 +227,6 @@ void Interface_graphic::information(const string &s) const {
     _ui_info_trace_text->insertHtml(QStringLiteral("<font color='green'>") + buf + QStringLiteral("</font><br /><br />"));
 }
 
-/***********************************
- *
- * Selected Trace entity informative function.
- *
- **********************************/
-
-void Interface_graphic::selection_information_clear() const {
-    _ui_select_info_window->get_tabs()->clear(); /* Remove all tabs in the QTabWidget*/
-}
-
-void Interface_graphic::selection_information_show() const {
-    _ui_select_info_window->show(); /* show select_info_window */
-}
-
-void Interface_graphic::selection_information(const std::string &tab_name, const string &content) const {
-    // Create and setup the tab
-    QTextEdit *text_widget = new QTextEdit(_ui_select_info_window->get_tabs());
-    text_widget->setReadOnly(true);
-    text_widget->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
-
-    // Fill the text content and add the tab to the window
-    text_widget->insertHtml(QStringLiteral("<font color='blue'>") + QString::fromStdString(content) + QStringLiteral("</font>"));
-    text_widget->moveCursor(QTextCursor::Start); // Make the text edit scroll to the top
-    _ui_select_info_window->get_tabs()->addTab(text_widget, QString::fromStdString(tab_name));
-}
-
 /***********************************
  *
  * Widget slot functions.
@@ -350,9 +323,7 @@ void Interface_graphic::remove_render_area(RenderLayout *render_layout) {
      * Clear the informative window texts and hide it.
      */
     _ui_info_trace_text->clear(); /* Clear the current text (if exists) */
-    _ui_select_info_window->get_tabs()->clear(); /* Clear the current text (if exists) */
     _ui_info_window->hide(); /* Hide the informative window */
-    _ui_select_info_window->hide(); /* Hide the selection information window */
 
     if (_ui_settings) {
         _ui_settings->hide();
@@ -390,8 +361,6 @@ void Interface_graphic::on_quit_triggered() {
         ((QWidget *)_ui_interval_selection)->close();
     if (nullptr != _ui_info_window)
         ((QWidget *)_ui_info_window)->close();
-    if (nullptr != _ui_select_info_window)
-        ((QWidget *)_ui_select_info_window)->close();
     ((QWidget *)this)->close();
 }
 
diff --git a/src/interface/Interface_graphic.hpp b/src/interface/Interface_graphic.hpp
index 998f5b4175436592d0ddfedae56bb5e832d83b0c..82549410ad191e1b7e3339ef186b1552312ac4aa 100644
--- a/src/interface/Interface_graphic.hpp
+++ b/src/interface/Interface_graphic.hpp
@@ -47,7 +47,6 @@ class QProgressDialog;
 #include "ui_main_window.h" /* the main window graphical interface */
 
 /* Global information */
-#include "interface/SelectInfo.hpp"
 #include "interface/Settings_window.hpp"
 #include "interface/Node_select.hpp"
 /* -- */
@@ -136,11 +135,6 @@ protected:
      */
     QWidget *_ui_info_window;
 
-    /*!
-     * \brief This variable contains the floatting box window for information on user selection in the application.
-     */
-    SelectInfo *_ui_select_info_window;
-
     /*!
      * \brief Dialog box to allow user to set its ViTE environment. (change color, text size, etc.)
      */
@@ -246,28 +240,6 @@ public:
      */
     void information(const std::string &string) const override;
 
-    /***********************************
-     *
-     * Selected Trace entity informative function.
-     *
-     **********************************/
-
-    /*!
-     * \brief Clear all entity tabs in the select_info_window.
-     */
-    void selection_information_clear() const;
-
-    /*!
-     * \brief Show the select_info_window.
-     */
-    void selection_information_show() const;
-
-    /*!
-     * \brief The function takes strings and/or numbers then displayed it in the entity informative text area in the info window.
-     * \param string The string to be displayed.
-     */
-    void selection_information(const std::string &tab_name, const std::string &content) const;
-
     /***********************************
      *
      * Parsing functions.
diff --git a/src/interface/SelectInfo.cpp b/src/interface/SelectInfo.cpp
index d8ff1142767c453a80ff80b095e56e5877e5a74e..baa69bbbabc05f4b4b854e06c2985a8d1735a9dc 100644
--- a/src/interface/SelectInfo.cpp
+++ b/src/interface/SelectInfo.cpp
@@ -16,16 +16,35 @@
  * When several Entities are clicked on at the same time, information for each are displayed in tabs
  */
 
-#include "interface/Interface_graphic.hpp"
 #include "interface/SelectInfo.hpp"
+/* -- */
+#include "render/RenderLayout.hpp"
+/* -- */
+#include <QTextEdit>
 
-SelectInfo::SelectInfo(Interface_graphic *interface_graphic) :
-    QDialog(interface_graphic), _interface_graphic(interface_graphic) {
+SelectInfo::SelectInfo(RenderLayout *render_layout) :
+    QDialog(nullptr), _render_layout(render_layout) {
     setupUi(this);
 }
 
 SelectInfo::~SelectInfo() = default;
 
-QTabWidget *SelectInfo::get_tabs() const {
-    return info_selection_tab;
+void SelectInfo::clear() {
+    info_selection_tab->clear(); /* Remove all tabs in the QTabWidget*/
+}
+
+void SelectInfo::add_info_tab(const std::string &tab_name, const std::string &content) {
+    // Create and setup the tab
+    QTextEdit *text_widget = new QTextEdit(info_selection_tab);
+    text_widget->setReadOnly(true);
+    text_widget->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
+
+    // Fill the text content and add the tab to the window
+    text_widget->insertHtml(QStringLiteral("<font color='blue'>") + QString::fromStdString(content) + QStringLiteral("</font>"));
+    text_widget->moveCursor(QTextCursor::Start); // Make the text edit scroll to the top
+    info_selection_tab->addTab(text_widget, QString::fromStdString(tab_name));
+}
+
+void SelectInfo::set_title(const QString &title) {
+    verticalGroupBox->setTitle(title + QString::fromStdString(" "));
 }
\ No newline at end of file
diff --git a/src/interface/SelectInfo.hpp b/src/interface/SelectInfo.hpp
index 746b7c550e00148e991506cd5aff40803342a449..a76e37f5f956f4ca158a3f5a83104e78db73d896 100644
--- a/src/interface/SelectInfo.hpp
+++ b/src/interface/SelectInfo.hpp
@@ -22,7 +22,7 @@
 #include "ui_select_info_window.h"
 /* -- */
 
-class Interface_graphic;
+class RenderLayout;
 
 /*!
  * \class SelectInfo
@@ -36,21 +36,33 @@ class SelectInfo : public QDialog, protected Ui::select_info_window
     Q_OBJECT
 
 private:
-    Interface_graphic *_interface_graphic;
+    RenderLayout *_render_layout;
 
 public:
     /*!
      * Default constructor
      * \param parent The parent widget of the window.
      */
-    SelectInfo(Interface_graphic *interface_graphic);
+    SelectInfo(RenderLayout *render_layout);
 
     ~SelectInfo();
 
-    /**
-     * \brief Getter for the tab container of the window
+    /*!
+     * \brief Clear all entity tabs in the select_info_window.
+     */
+    void clear();
+
+    /*!
+     * \brief The function takes strings and/or numbers then displayed it in the entity informative text area in the info window.
+     * \param string The string to be displayed.
+     */
+    void add_info_tab(const std::string &tab_name, const std::string &content);
+
+    /*!
+     * \brief Set the title of the SelectInfo tab container
+     * \param title the new title
      */
-    QTabWidget *get_tabs() const;
+    void set_title(const QString &title);
 
 private:
 private Q_SLOTS:
diff --git a/src/render/Hook_event.cpp b/src/render/Hook_event.cpp
index e408718edc1cbff763bf4ccc6c90ff15cda003f0..a9b95a6dcb05545110b9f038dfd826789babb828 100644
--- a/src/render/Hook_event.cpp
+++ b/src/render/Hook_event.cpp
@@ -238,7 +238,7 @@ void Hook_event::mouseDoubleClickEvent(QMouseEvent *event) {
     if (Qt::LeftButton == event->button()) {
 
         DrawTrace buf;
-        buf.display_information(_interface_graphic, _layout->get_trace(), render_to_trace_x(screen_to_render_x(_mouse_x)), render_to_trace_y(screen_to_render_y(_mouse_y)), 1 / coeff_trace_render_x());
+        buf.display_information(_layout->get_select_info_window(), _layout->get_trace(), render_to_trace_x(screen_to_render_x(_mouse_x)), render_to_trace_y(screen_to_render_y(_mouse_y)), 1 / coeff_trace_render_x());
 
         _mouse_pressed = false;
         update_render();
diff --git a/src/render/RenderLayout.cpp b/src/render/RenderLayout.cpp
index 50397e03dc392115c39eb7ee5bae067232c02d33..8c9aa59967d1aef8e3412a4faaee70a40e1161cd 100644
--- a/src/render/RenderLayout.cpp
+++ b/src/render/RenderLayout.cpp
@@ -25,6 +25,8 @@
 /* -- */
 #include "common/Export.hpp"
 /* -- */
+#include "interface/SelectInfo.hpp"
+/* -- */
 #include "trace/Trace.hpp"
 
 #define BUTTON_SIZE 24
@@ -32,7 +34,8 @@
 RenderLayout::RenderLayout(Interface_graphic *interface_graphic, QWidget *parent_widget, QVBoxLayout *parent_layout, Render_windowed *render_area) :
     QObject(),
     _interface_graphic(interface_graphic),
-    _slider_x_position(0), _slider_y_position(0) {
+    _slider_x_position(0), _slider_y_position(0),
+    _select_info_window(this) {
 
     // In the following code Qt objects are allocated using new
     // Qt desallocate automatically these object
@@ -66,6 +69,7 @@ RenderLayout::RenderLayout(Interface_graphic *interface_graphic, QWidget *parent
     connect(close_button, &QPushButton::pressed, this, [=]() {
         splitter->hide();
         _interface_graphic->remove_render_area(this);
+        _select_info_window.close();
     });
 
     buttons_scroll_layout->addWidget(close_button);
@@ -253,6 +257,7 @@ RenderLayout::~RenderLayout() {
     if (nullptr != _trace) {
         delete _trace;
     }
+    _select_info_window.close();
 }
 
 QSlider *RenderLayout::get_scale_container_slider() const {
@@ -279,8 +284,13 @@ Render_windowed *RenderLayout::get_render_area() {
     return _render_area;
 }
 
+SelectInfo *RenderLayout::get_select_info_window() {
+    return &_select_info_window;
+}
+
 void RenderLayout::set_trace(Trace *trace) {
     _trace = trace;
+    _select_info_window.set_title(QString::fromStdString(trace->get_filename()));
 }
 
 Trace *RenderLayout::get_trace() const {
diff --git a/src/render/RenderLayout.hpp b/src/render/RenderLayout.hpp
index 1927d6852524e8907ade96c9406402fd615f323e..cbc85a80cdd3a92d4731bce9266ce706fe60b8d4 100644
--- a/src/render/RenderLayout.hpp
+++ b/src/render/RenderLayout.hpp
@@ -19,6 +19,7 @@
 #define _RENDER_LAYOUT_
 
 #include "interface/Interface_graphic.hpp"
+#include "interface/SelectInfo.hpp"
 /* -- */
 #include "Render_windowed.hpp"
 /* -- */
@@ -57,6 +58,7 @@ private:
 
     // This event loop is used to wait for the OpenGL initialization
     QEventLoop _wait_gl_init;
+    SelectInfo _select_info_window;
 
     /*!
      * \brief Contains the conversion factor between x virtual and real scroll unit.
@@ -106,6 +108,11 @@ public:
     Trace *get_trace() const;
     void delete_trace();
 
+    /*!
+     * \brief Getter for the select info window
+     */
+    SelectInfo *get_select_info_window();
+
     /*!
      * \brief Getter for the QEventLoop wait_gl_init
      */
diff --git a/src/trace/DrawTrace.cpp b/src/trace/DrawTrace.cpp
index bad05ff95ba19c9397652c294bea12b701dece90..e69632299727ee3f8b0ef50386df46caebff9338 100644
--- a/src/trace/DrawTrace.cpp
+++ b/src/trace/DrawTrace.cpp
@@ -23,7 +23,7 @@
 #include "common/Log.hpp"
 #include "common/Message.hpp"
 /* -- */
-#include "interface/Interface_graphic.hpp"
+#include "interface/SelectInfo.hpp"
 /* -- */
 #include "render/GanttDiagram.hpp"
 /* -- */
@@ -61,7 +61,7 @@ void print_extra_fields(const std::string &name, const std::map<std::string, Val
     }
 }
 
-void display_link_info(const Link *link, const Interface_graphic *window, const int &index) {
+void display_link_info(const Link *link, SelectInfo *select_info, const int &index) {
     std::stringstream message_buffer;
     message_buffer.str("");
     message_buffer << "<center><strong>Link</strong></center>"
@@ -74,10 +74,10 @@ void display_link_info(const Link *link, const Interface_graphic *window, const
     print_extra_fields("Link", link->get_extra_fields(), &message_buffer);
     print_extra_fields("Value", link->get_value()->get_extra_fields(), &message_buffer);
     print_extra_fields("Type", link->get_type()->get_extra_fields(), &message_buffer);
-    window->selection_information("Link " + std::to_string(index), message_buffer.str());
+    select_info->add_info_tab("Link " + std::to_string(index), message_buffer.str());
 }
 
-void display_event_info(const Event *event, const Interface_graphic *window, const int &index) {
+void display_event_info(const Event *event, SelectInfo *select_info, const int &index) {
     std::stringstream message_buffer;
     message_buffer.str("");
     message_buffer << "<center><strong>Event</strong></center>"
@@ -88,9 +88,9 @@ void display_event_info(const Event *event, const Interface_graphic *window, con
     print_extra_fields("Event", event->get_extra_fields(), &message_buffer);
     print_extra_fields("Value", event->get_value()->get_extra_fields(), &message_buffer);
     print_extra_fields("Type", event->get_type()->get_extra_fields(), &message_buffer);
-    window->selection_information("Event " + std::to_string(index), message_buffer.str());
+    select_info->add_info_tab("Event " + std::to_string(index), message_buffer.str());
 }
-void display_state_info(const State *state, const Interface_graphic *window) {
+void display_state_info(const State *state, SelectInfo *select_info) {
     std::stringstream message_buffer;
     message_buffer.str("");
     message_buffer << "<center><strong>State</strong></center>"
@@ -102,9 +102,9 @@ void display_state_info(const State *state, const Interface_graphic *window) {
     print_extra_fields("State", state->get_extra_fields(), &message_buffer);
     print_extra_fields("Value", state->get_value()->get_extra_fields(), &message_buffer);
     print_extra_fields("Type", state->get_type()->get_extra_fields(), &message_buffer);
-    window->selection_information("State", message_buffer.str());
+    select_info->add_info_tab("State", message_buffer.str());
 }
-void display_variable_info(const Variable *variable, const Times &x, const Interface_graphic *window) {
+void display_variable_info(const Variable *variable, const Times &x, SelectInfo *select_info) {
     std::stringstream message_buffer;
     message_buffer.str("");
     message_buffer << "<center><strong>Variable</strong></center>"
@@ -115,7 +115,7 @@ void display_variable_info(const Variable *variable, const Times &x, const Inter
                    << "<strong>Min:</strong> " << variable->get_min().get_value() << "<br />"
                    << "<strong>Max:</strong> " << variable->get_max().get_value() << "<br />";
     print_extra_fields("Type", variable->get_type()->get_extra_fields(), &message_buffer);
-    window->selection_information("Variable", message_buffer.str());
+    select_info->add_info_tab("Variable", message_buffer.str());
 }
 
 void DrawTrace::fill_link_list(const Container *container, const Element_pos &x, const Element_pos &y, const Element_pos &accuracy, Link::Vector *link_list) {
@@ -186,7 +186,7 @@ void fill_event_list(const Node<Event> *node, const Element_pos &x, const Elemen
     return;
 }
 
-void DrawTrace::display_information(const Interface_graphic *window, const Trace *trace, double x, double y, double d) {
+void DrawTrace::display_information(SelectInfo *select_info, const Trace *trace, double x, double y, double d) {
     const Container *container = nullptr;
     const Container *ancestor = nullptr;
 
@@ -195,7 +195,7 @@ void DrawTrace::display_information(const Interface_graphic *window, const Trace
     const State *state;
     const Variable *variable;
 
-    window->selection_information_clear();
+    select_info->clear();
 
     // find container needs to know the position of each container
     Element_pos yr = y;
@@ -224,14 +224,14 @@ void DrawTrace::display_information(const Interface_graphic *window, const Trace
     if (((container->get_states() != NULL && !container->get_states()->empty()) || (container->get_events() != NULL && !container->get_events()->empty())) && yr < _container_height + _container_v_space) {
 #endif
         if ((state = find_state(container, x))) {
-            display_state_info(state, window);
+            display_state_info(state, select_info);
         }
         if (!Info::Render::_no_events) {
             if (container->get_events() != nullptr) {
                 fill_event_list(container->get_events()->get_root(), x, d, &event_list);
                 int i = 1;
                 for (auto const &event: event_list) {
-                    display_event_info(event, window, i);
+                    display_event_info(event, select_info, i);
                     i++;
                 }
             }
@@ -253,7 +253,7 @@ void DrawTrace::display_information(const Interface_graphic *window, const Trace
         }
         if (i != variable_map->end()) {
             variable = (*i).second;
-            display_variable_info(variable, (Times)x, window);
+            display_variable_info(variable, (Times)x, select_info);
         }
     }
 
@@ -266,11 +266,11 @@ void DrawTrace::display_information(const Interface_graphic *window, const Trace
         }
         int i = 1;
         for (auto const &link: link_list) {
-            display_link_info(link, window, i);
+            display_link_info(link, select_info, i);
             i++;
         }
     }
-    window->selection_information_show();
+    select_info->show();
     return;
 }
 
diff --git a/src/trace/DrawTrace.hpp b/src/trace/DrawTrace.hpp
index cd04647f0b64661e132ee59a7e6ae65b8d563fc7..584d7ec1670409a3f285f57432eb9a260c6dc0b5 100644
--- a/src/trace/DrawTrace.hpp
+++ b/src/trace/DrawTrace.hpp
@@ -28,6 +28,8 @@
 
 #include <cmath>
 /* -- */
+#include "interface/SelectInfo.hpp"
+/* -- */
 #include "render/Render_windowed.hpp"
 /* -- */
 #include "trace/Container.hpp"
@@ -174,13 +176,13 @@ public:
 
     /*!
      * \brief Browse and display information on entities in a range d from where the user has clicked
-     * \param window Interface_graphic used to get to the selection information window
+     * \param select_info the SelectInfo window in which the information are displayed
      * \param trace Trace to browse
      * \param x x coordinate of the click
      * \param y y coordinate of the click
      * \param d distance from the click, containing the entities
      */
-    void display_information(const Interface_graphic *window, const Trace *trace, double x, double y, double d);
+    void display_information(SelectInfo *select_info, const Trace *trace, double x, double y, double d);
 
     /*!
      * \brief Return the closest container from the a designated container located on height y