Cambios en gtkmm 3
gtkmm-3.0 is an old version of the gtkmm API that installs in parallel with the still older gtkmm-2.4 API and the new gtkmm-4.0 API. The last version of the gtkmm-2.4 API was gtkmm 2.24. gtkmm 3 has no major fundamental differences to gtkmm 2 but does make several small changes that were not possible while maintaining binary compatibility. If you never used the gtkmm-2.4 API then you can safely ignore this chapter.
La biblioteca de gtkmm 3 se llama libgtkmm-3.0, en vez de libgtkmm-2.4 e instala sus archivos de cabecera en una carpeta versionada similarmente, por lo que su verificación pkg-config debería buscar gtkmm-3.0 en vez de gtkmm-2.4.
gtkmm 3 añadió algunas clases nuevas:
Gtk::AppChooser, Gtk::AppChooserButton, Gtk::AppChooserDialog permiten al usuario seleccionar una aplicación instalada para abrir un determinado tipo de contenido.
Gtk::Grid es un widget contenedor nuevo que eventualmente reemplazará a Gtk::Box y a Gtk::Table. Ordena a sus hijos de acuerdo a sus propiedades en lugar de sus propios detalles de disposición.
Gtk::Switch displays On/Off states more explictly than Gtk::CheckButton. It may be useful, for instance, when allowing users to activate hardware.
gtkmm 3 también hizo varios cambios pequeños a la API, que probablemente encontrará cuando porte código que usaba gtkmm-2.4. Aquí hay una lista corta:
Gtk::CellLayout, usada por Gtk::IconView, Gtk::TreeView::Column y Gtk::ComboBox ahora tiene una Gtk::CellArea, que puede usarse para especificar más detalles acerca de cómo las CellRenderer se ordenan y alinean.
Gtk::ComboBox ahora deriva de CellLayout, permitiendo una disposición y alineación más fácil de sus Gtk::CellRenderer.
Gtk::Adjustment, IconSet y Gdk::Cursor se usan ahora a través de Glib::RefPtr.
Gtk::Box, Gtk::ButtonBox, Gtk::IconView, Gtk::Paned, Gtk::ProgressBar, Gtk::ScaleButton, Gtk::Scrollbar y Gtk::Separator ahora derivan de Gtk::Orientable, permitiendo especificar su orientación (vertical u horizontal) sin requerir el uso de una clase derivada como Gtk::HBox.
Gtk::IconView, Gtk::TextView, Gtk::TreeView y otros widgets derivan de Scrollable en vez de tener sus propios métodos como get_vadjustment() y su propia señal set_scroll_adjustments.
Gtk::Style y Gtk::Rc se quitaron y se reemplazaron por Gtk::StyleContext, y Gtk::StyleProvider, así como Gtk::CssProvider.
Widget::on_expose_event() se reemplazó por Widget::on_draw(), que asume que cairomm se usa para dibujar, a través del Cairo::Context provisto y no requiere que llame a Cairo::Context::clip().
Gdk::RGBA reemplaza a Color, añadiendo un componente alfa para la opacidad. Colormap se eliminó, junto con su molesto uso para asignar colores.
Gdk::Pixmap y Gdk::Bitmap se eliminaron en favor de Gdk::Pixbuf.
Gdk::Drawable se quitó, y sus métodos se movieron a Gdk::Window.
Ahora se usa std::vector en muchos métodos en vez de los tipos intermedios *Handle para hacer a la API más clara.
All deprecated API was removed in gtkmm 3.0, though there have been new deprecations in later gtkmm 3.x versions.
As a first step to porting your source code to gtkmm-3.0 you should probably ensure that your application builds with the deprecated gtkmm-2.4 API disabled, by defining macro such as GTKMM_DISABLE_DEPRECATED. There are some autotools macros that can help with this by defining them optionally at build time. See the gtkmm 3 porting wiki page for more details.