Browse Source

success with text ellipsize for combobox

tamasmeszaros 4 years ago
parent
commit
a5882a1a1c
2 changed files with 29 additions and 0 deletions
  1. 9 0
      src/slic3r/CMakeLists.txt
  2. 20 0
      src/slic3r/GUI/PresetComboBoxes.cpp

+ 9 - 0
src/slic3r/CMakeLists.txt

@@ -255,3 +255,12 @@ endif ()
 if (SLIC3R_PCH AND NOT SLIC3R_SYNTAXONLY)
     add_precompiled_header(libslic3r_gui pchheader.hpp FORCEINCLUDE)
 endif ()
+
+target_include_directories(libslic3r_gui PUBLIC /usr/include/glib-2.0)
+target_include_directories(libslic3r_gui PUBLIC /usr/lib/glib-2.0/include)
+target_include_directories(libslic3r_gui PUBLIC /usr/include/pango-1.0)
+target_include_directories(libslic3r_gui PUBLIC /usr/include/harfbuzz)
+target_include_directories(libslic3r_gui PUBLIC /usr/include/gtk-3.0/)
+target_include_directories(libslic3r_gui PUBLIC /usr/include/cairo/)
+target_include_directories(libslic3r_gui PUBLIC /usr/include/gdk-pixbuf-2.0/)
+target_include_directories(libslic3r_gui PUBLIC /usr/include/atk-1.0/)

+ 20 - 0
src/slic3r/GUI/PresetComboBoxes.cpp

@@ -32,6 +32,10 @@
 #include "PhysicalPrinterDialog.hpp"
 #include "SavePresetDialog.hpp"
 
+#include <glib-2.0/glib-object.h>
+#include <pango-1.0/pango/pango-layout.h>
+#include <gtk/gtk.h>
+
 using Slic3r::GUI::format_wxstr;
 
 namespace Slic3r {
@@ -130,6 +134,8 @@ PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const
         }
         evt.Skip();
     });
+
+//    g_object_set( G_OBJECT( this ), "ellipsize", PANGO_ELLIPSIZE_END, nullptr);
 }
 
 PresetComboBox::~PresetComboBox()
@@ -179,6 +185,20 @@ void PresetComboBox::update_selection()
 
     SetSelection(m_last_selected);
     SetToolTip(GetString(m_last_selected));
+
+    GList* cells = gtk_cell_layout_get_cells( GTK_CELL_LAYOUT( m_widget ) );
+    if( !cells )
+        return;
+
+    GtkCellRendererText* cell = (GtkCellRendererText *) cells->next->data;
+
+    if( !cell )
+        return;
+
+    g_object_set( G_OBJECT( cell ), "ellipsize", PANGO_ELLIPSIZE_END, NULL );
+
+    // Only the list of cells must be freed, the renderer isn't ours to free
+    g_list_free( cells );
 }
 
 void PresetComboBox::update(std::string select_preset_name)