ANNOUNCE: gtkmm 3.0.0



*** gtkmm 3.0:

gtkmm 3.0 wraps GTK+ 3.9. It is the gtkmm-3.0 ABI and installs in 
parallel with the gtkmm-2.4 ABI, of which gtkmm 2.24 is currently the latest stable 
version. This allows application developers to start using it when they choose to, 
without being forced, and without breaking existing installed applications.

gtkmm-3.0 is mostly API-compatible with gtkmm-2.4, though some  
changes will be needed in application source code.

gtkmm stays in-sync with GTK+ by following the official GNOME release schedule:
http://www.gnome.org/start/unstable/

Bindings for the rest of the GNOME Platform are also available, and are also 
API-stable.

http://www.gtkmm.org


*** Changes

gtkmm 3.0:

To port to gtkmm-3.0 you should first try to build your application with
gtkmm-2.4 but without using deprecated API. For instance:
http://www.murrayc.com/blog/permalink/2011/01/18/avoiding-use-of-deprecated-api/

The deprecated API generally has documentation suggesting what new API you
should use instead:
http://developer.gnome.org/gtkmm/2.24/deprecated.html

These hints might also be helpful:
http://live.gnome.org/gtkmm/PortingToGtkmm3

Some new/changed API in gtkmm-3.0:

Gtk:
* Adjustment is now used via RefPtr.
* AppChooser, AppChooserButton, AppChooserDialog.
* Box, ButtonBox, IconView, Paned, ProgressBar, ScaleButton, ScrollBar,
  and Separator now derive from Orientable.
* All widgets derive from Buildable.
* Several widgets derive from Scrollable.
* CellArea and CellAreaBox
* ComboBox now derives from CellLayout.
* IconSet is now used via RefPtr.
* StyleContext, StyleProvider, and CssProvider, replacing Style and Rc.
* Grid
* NumerableIcon.
* Switch
* Widget::on_expose_event() is now Widget::on_draw().

Gdk:
* Added DeviceManager.
* Removed Drawable, Pixmap and Bitmap.
* Cursor is now used via RefPtr.
* RGBA replaces Color, though Color still exists because it is used by TextView.
  We hope to deprecated Color completely in gtkmm 3.2.
* Removed Colormap and its general awkardness.

General:
* Use std::vector in several methods instead of the intermediate *Handle types,
  to make the API clearer.
* Change all operator void* to operator const void*, with a BoolExpr typedef
  and extra documentation.
  This avoids an unintentional implicit cast to int, and is generally
  considered good practice in C++. The new C++ standard allows the use of
  the explicit keyword here instead, but that is not yet widespread.
* Many existing classes have many new methods.
* gtkmm-3.0 currently has no deprecated API.
  Not even API that was added and then deprecated during GTK+ 3.0.

See also the list of new API in gtkmm 3.0:
http://developer.gnome.org/gtkmm/unstable/since_3_0.html


3.0.0 changes since 2.99.9:

Gtk:
* Change all operator void* to operator const void*, with a BoolExpr typedef
  and extra documentation.
  This avoids an unintentional implicit cast to int, and is generally
  considered good practice in C++. The new C++ standard allows the use of
  the explicit keyword here instead, but that is not yet widespread.
  (Murray Cumming, Daniel Elstner)
* NumerableIcon: Really add get_background_gicon() const.
  (Murray Cumming, Kjell Ahlstedt)
* StateFlags: Added missing STATE_FLAG_NORMAL enum value.
  (Kalev Lember)


*** Development 

There is active discussion on the mailing list: 
http://www.gtkmm.org/mailinglist.shtml
and in the #c++ channel on irc.gnome.org


-- 
Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com


























[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]