diff options
| author | Neil <nyamatongwe@gmail.com> | 2019-03-27 08:34:16 +1100 | 
|---|---|---|
| committer | Neil <nyamatongwe@gmail.com> | 2019-03-27 08:34:16 +1100 | 
| commit | ff4e7e74e24d88194e01a78f9c5b2649bbcc1a59 (patch) | |
| tree | d8ec063c8a5a7afc16022005bd4fe109b22a763e /gtk/PlatGTK.cxx | |
| parent | a29736e309ee7d0b8ca588674024c2deb6923090 (diff) | |
| download | scintilla-mirror-ff4e7e74e24d88194e01a78f9c5b2649bbcc1a59.tar.gz | |
Replace NULL/0 with nullptr. Mark noexcept where simple.
Move some static functions into anonymous namespace.
Diffstat (limited to 'gtk/PlatGTK.cxx')
| -rw-r--r-- | gtk/PlatGTK.cxx | 203 | 
1 files changed, 104 insertions, 99 deletions
| diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx index 40e87c428..fd37b0a6a 100644 --- a/gtk/PlatGTK.cxx +++ b/gtk/PlatGTK.cxx @@ -33,51 +33,57 @@  #include "Converter.h" -static const double kPi = 3.14159265358979323846; +#ifdef _MSC_VER +// Ignore unreferenced local functions in GTK+ headers +#pragma warning(disable: 4505) +#endif + +using namespace Scintilla; + +namespace { + +const double kPi = 3.14159265358979323846;  // The Pango version guard for pango_units_from_double and pango_units_to_double  // is more complex than simply implementing these here. -static int pangoUnitsFromDouble(double d) { +int pangoUnitsFromDouble(double d) noexcept {  	return static_cast<int>(d * PANGO_SCALE + 0.5);  } -static double doubleFromPangoUnits(int pu) { +double doubleFromPangoUnits(int pu) noexcept {  	return static_cast<double>(pu) / PANGO_SCALE;  } -static cairo_surface_t *CreateSimilarSurface(GdkWindow *window, cairo_content_t content, int width, int height) { +cairo_surface_t *CreateSimilarSurface(GdkWindow *window, cairo_content_t content, int width, int height) noexcept {  	return gdk_window_create_similar_surface(window, content, width, height);  } -static GdkWindow *WindowFromWidget(GtkWidget *w) { +GdkWindow *WindowFromWidget(GtkWidget *w) noexcept {  	return gtk_widget_get_window(w);  } -#ifdef _MSC_VER -// Ignore unreferenced local functions in GTK+ headers -#pragma warning(disable: 4505) -#endif - -using namespace Scintilla; +GtkWidget *PWidget(WindowID wid) noexcept { +	return static_cast<GtkWidget *>(wid); +} -enum encodingType { singleByte, UTF8, dbcs}; +enum encodingType { singleByte, UTF8, dbcs };  // Holds a PangoFontDescription*.  class FontHandle {  public:  	PangoFontDescription *pfd;  	int characterSet; -	FontHandle() : pfd(0), characterSet(-1) { +	FontHandle() noexcept : pfd(nullptr), characterSet(-1) {  	} -	FontHandle(PangoFontDescription *pfd_, int characterSet_) { +	FontHandle(PangoFontDescription *pfd_, int characterSet_) noexcept {  		pfd = pfd_;  		characterSet = characterSet_;  	}  	~FontHandle() {  		if (pfd)  			pango_font_description_free(pfd); -		pfd = 0; +		pfd = nullptr;  	}  	static FontHandle *CreateNewFont(const FontParameters &fp);  }; @@ -93,21 +99,19 @@ FontHandle *FontHandle::CreateNewFont(const FontParameters &fp) {  		return new FontHandle(pfd,fp.characterSet);  	} -	return NULL; +	return nullptr;  }  // X has a 16 bit coordinate space, so stop drawing here to avoid wrapping -static const int maxCoordinate = 32000; +const int maxCoordinate = 32000; -static FontHandle *PFont(Font &f) { +FontHandle *PFont(const Font &f) noexcept {  	return static_cast<FontHandle *>(f.GetID());  } -static GtkWidget *PWidget(WindowID wid) { -	return static_cast<GtkWidget *>(wid);  } -Font::Font() noexcept : fid(0) {} +Font::Font() noexcept : fid(nullptr) {}  Font::~Font() {} @@ -119,7 +123,7 @@ void Font::Create(const FontParameters &fp) {  void Font::Release() {  	if (fid)  		delete static_cast<FontHandle *>(fid); -	fid = 0; +	fid = nullptr;  }  // Required on OS X @@ -140,14 +144,14 @@ class SurfaceImpl : public Surface {  	int characterSet;  	void SetConverter(int characterSet_);  public: -	SurfaceImpl(); +	SurfaceImpl() noexcept;  	~SurfaceImpl() override;  	void Init(WindowID wid) override;  	void Init(SurfaceID sid, WindowID wid) override;  	void InitPixMap(int width, int height, Surface *surface_, WindowID wid) override; -	void Clear(); +	void Clear() noexcept;  	void Release() override;  	bool Initialised() override;  	void PenColour(ColourDesired fore) override; @@ -190,7 +194,7 @@ public:  };  } -const char *CharacterSetID(int characterSet) { +const char *CharacterSetID(int characterSet) noexcept {  	switch (characterSet) {  	case SC_CHARSET_ANSI:  		return ""; @@ -248,33 +252,33 @@ void SurfaceImpl::SetConverter(int characterSet_) {  	}  } -SurfaceImpl::SurfaceImpl() : et(singleByte), -context(0), -psurf(0), -x(0), y(0), inited(false), createdGC(false) -, pcontext(0), layout(0), characterSet(-1) { +SurfaceImpl::SurfaceImpl() noexcept : et(singleByte), +context(nullptr), +psurf(nullptr), +x(0), y(0), inited(false), createdGC(false), +pcontext(nullptr), layout(nullptr), characterSet(-1) {  }  SurfaceImpl::~SurfaceImpl() {  	Clear();  } -void SurfaceImpl::Clear() { +void SurfaceImpl::Clear() noexcept {  	et = singleByte;  	if (createdGC) {  		createdGC = false;  		cairo_destroy(context);  	} -	context = 0; +	context = nullptr;  	if (psurf)  		cairo_surface_destroy(psurf); -	psurf = 0; +	psurf = nullptr;  	if (layout)  		g_object_unref(layout); -	layout = 0; +	layout = nullptr;  	if (pcontext)  		g_object_unref(pcontext); -	pcontext = 0; +	pcontext = nullptr;  	conv.Close();  	characterSet = -1;  	x = 0; @@ -311,8 +315,8 @@ void SurfaceImpl::Init(WindowID wid) {  	Release();  	PLATFORM_ASSERT(wid);  	// if we are only created from a window ID, we can't perform drawing -	psurf = 0; -	context = 0; +	psurf = nullptr; +	context = nullptr;  	createdGC = false;  	pcontext = gtk_widget_create_pango_context(PWidget(wid));  	PLATFORM_ASSERT(pcontext); @@ -388,7 +392,7 @@ void SurfaceImpl::MoveTo(int x_, int y_) {  	y = y_;  } -static int Delta(int difference) { +static int Delta(int difference) noexcept {  	if (difference < 0)  		return -1;  	else if (difference > 0) @@ -468,7 +472,7 @@ void SurfaceImpl::FillRectangle(PRectangle rc, ColourDesired back) {  void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern) {  	SurfaceImpl &surfi = static_cast<SurfaceImpl &>(surfacePattern); -	bool canDraw = surfi.psurf != NULL; +	bool canDraw = surfi.psurf != nullptr;  	if (canDraw) {  		PLATFORM_ASSERT(context);  		// Tile pattern over rectangle @@ -510,7 +514,7 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesi  	}  } -static void PathRoundRectangle(cairo_t *context, double left, double top, double width, double height, int radius) { +static void PathRoundRectangle(cairo_t *context, double left, double top, double width, double height, int radius) noexcept {  	double degrees = kPi / 180.0;  	cairo_new_sub_path(context); @@ -619,7 +623,7 @@ void SurfaceImpl::Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back)  void SurfaceImpl::Copy(PRectangle rc, Point from, Surface &surfaceSource) {  	SurfaceImpl &surfi = static_cast<SurfaceImpl &>(surfaceSource); -	bool canDraw = surfi.psurf != NULL; +	bool canDraw = surfi.psurf != nullptr;  	if (canDraw) {  		PLATFORM_ASSERT(context);  		cairo_set_source_surface(context, surfi.psurf, @@ -744,19 +748,19 @@ public:  	XYPOSITION position;  	XYPOSITION distance;  	int curIndex; -	ClusterIterator(PangoLayout *layout, size_t len) : lenPositions(len), finished(false), +	ClusterIterator(PangoLayout *layout, size_t len) noexcept : lenPositions(len), finished(false),  		positionStart(0), position(0), distance(0), curIndex(0) {  		iter = pango_layout_get_iter(layout); -		pango_layout_iter_get_cluster_extents(iter, NULL, &pos); +		pango_layout_iter_get_cluster_extents(iter, nullptr, &pos);  	}  	~ClusterIterator() {  		pango_layout_iter_free(iter);  	} -	void Next() { +	void Next() noexcept {  		positionStart = position;  		if (pango_layout_iter_next_cluster(iter)) { -			pango_layout_iter_get_cluster_extents(iter, NULL, &pos); +			pango_layout_iter_get_cluster_extents(iter, nullptr, &pos);  			position = doubleFromPangoUnits(pos.x);  			curIndex = pango_layout_iter_get_index(iter);  		} else { @@ -845,7 +849,7 @@ void SurfaceImpl::MeasureWidths(Font &font_, std::string_view text, XYPOSITION *  						if (rtlCheck && ((clusterEnd <= clusterStart) || (ligatureLength == 0) || (ligatureLength > 3))) {  							// Something has gone wrong: exit quickly but pretend all the characters are equally spaced:  							int widthLayout = 0; -							pango_layout_get_size(layout, &widthLayout, NULL); +							pango_layout_get_size(layout, &widthLayout, nullptr);  							XYPOSITION widthTotal = doubleFromPangoUnits(widthLayout);  							for (size_t bytePos=0; bytePos<lenPositions; bytePos++) {  								positions[bytePos] = widthTotal / lenPositions * (bytePos + 1); @@ -891,7 +895,7 @@ XYPOSITION SurfaceImpl::WidthText(Font &font_, std::string_view text) {  				pango_layout_set_text(layout, utfForm.c_str(), utfForm.length());  			}  			PangoLayoutLine *pangoLine = pango_layout_get_line_readonly(layout,0); -			pango_layout_line_get_extents(pangoLine, NULL, &pos); +			pango_layout_line_get_extents(pangoLine, nullptr, &pos);  			return doubleFromPangoUnits(pos.width);  		}  		return 1; @@ -984,7 +988,7 @@ void Window::Destroy() {  		} else {  			gtk_widget_destroy(GTK_WIDGET(wid));  		} -		wid = 0; +		wid = nullptr;  	}  } @@ -1163,7 +1167,7 @@ struct ListImage {  	GdkPixbuf *pixbuf;  }; -static void list_image_free(gpointer, gpointer value, gpointer) { +static void list_image_free(gpointer, gpointer value, gpointer) noexcept {  	ListImage *list_image = static_cast<ListImage *>(value);  	if (list_image->pixbuf)  		g_object_unref(list_image->pixbuf); @@ -1200,28 +1204,29 @@ class ListBoxX : public ListBox {  public:  	IListBoxDelegate *delegate; -	ListBoxX() : widCached(0), frame(0), list(0), scroller(0), pixhash(NULL), pixbuf_renderer(0), -		renderer(0), +	ListBoxX() noexcept : widCached(nullptr), frame(nullptr), list(nullptr), scroller(nullptr), +		pixhash(nullptr), pixbuf_renderer(nullptr), +		renderer(nullptr),  		desiredVisibleRows(5), maxItemCharacters(0),  		aveCharWidth(1),  #if GTK_CHECK_VERSION(3,0,0) -		cssProvider(NULL), +		cssProvider(nullptr),  #endif  		delegate(nullptr) {  	}  	~ListBoxX() override {  		if (pixhash) { -			g_hash_table_foreach((GHashTable *) pixhash, list_image_free, NULL); +			g_hash_table_foreach((GHashTable *) pixhash, list_image_free, nullptr);  			g_hash_table_destroy((GHashTable *) pixhash);  		}  		if (widCached) {  			gtk_widget_destroy(GTK_WIDGET(widCached)); -			wid = widCached = 0; +			wid = widCached = nullptr;  		}  #if GTK_CHECK_VERSION(3,0,0)  		if (cssProvider) {  			g_object_unref(cssProvider); -			cssProvider = NULL; +			cssProvider = nullptr;  		}  #endif  	} @@ -1259,7 +1264,7 @@ static int treeViewGetRowHeight(GtkTreeView *view) {  	// version is inaccurate for GTK 3.14.  	GdkRectangle rect;  	GtkTreePath *path = gtk_tree_path_new_first(); -	gtk_tree_view_get_background_area(view, path, NULL, &rect); +	gtk_tree_view_get_background_area(view, path, nullptr, &rect);  	gtk_tree_path_free(path);  	return rect.height;  #else @@ -1267,10 +1272,10 @@ static int treeViewGetRowHeight(GtkTreeView *view) {  	int vertical_separator=0;  	int expander_size=0;  	GtkTreeViewColumn *column = gtk_tree_view_get_column(view, 0); -	gtk_tree_view_column_cell_get_size(column, NULL, NULL, NULL, NULL, &row_height); +	gtk_tree_view_column_cell_get_size(column, nullptr, nullptr, nullptr, nullptr, &row_height);  	gtk_widget_style_get(GTK_WIDGET(view),  		"vertical-separator", &vertical_separator, -		"expander-size", &expander_size, NULL); +		"expander-size", &expander_size, nullptr);  	row_height += vertical_separator;  	row_height = std::max(row_height, expander_size);  	return row_height; @@ -1304,7 +1309,7 @@ static void small_scroller_get_preferred_height(GtkWidget *widget, gint *min, gi  	GtkWidget *child = gtk_bin_get_child(GTK_BIN(widget));  	if (GTK_IS_TREE_VIEW(child)) {  		GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(child)); -		int n_rows = gtk_tree_model_iter_n_children(model, NULL); +		int n_rows = gtk_tree_model_iter_n_children(model, nullptr);  		int row_height = treeViewGetRowHeight(GTK_TREE_VIEW(child));  		*min = MAX(1, row_height); @@ -1365,7 +1370,7 @@ static gboolean ButtonRelease(GtkWidget *, GdkEventButton* ev, gpointer p) {  scheme that it would use if it had the focus. */  static void StyleSet(GtkWidget *w, GtkStyle*, void*) { -	g_return_if_fail(w != NULL); +	g_return_if_fail(w != nullptr);  	/* Copy the selected color to active.  Note that the modify calls will cause  	recursive calls to this function after the value is updated and w->style to @@ -1377,7 +1382,7 @@ static void StyleSet(GtkWidget *w, GtkStyle*, void*) {  	// The *override* calls are deprecated now, so only call them for older versions of GTK+.  #elif GTK_CHECK_VERSION(3,0,0)  	GtkStyleContext *styleContext = gtk_widget_get_style_context(w); -	if (styleContext == NULL) +	if (styleContext == nullptr)  		return;  	GdkRGBA colourForeSelected; @@ -1388,7 +1393,7 @@ static void StyleSet(GtkWidget *w, GtkStyle*, void*) {  		gtk_widget_override_color(w, GTK_STATE_FLAG_ACTIVE, &colourForeSelected);  	styleContext = gtk_widget_get_style_context(w); -	if (styleContext == NULL) +	if (styleContext == nullptr)  		return;  	GdkRGBA colourBaseSelected; @@ -1399,12 +1404,12 @@ static void StyleSet(GtkWidget *w, GtkStyle*, void*) {  		gtk_widget_override_background_color(w, GTK_STATE_FLAG_ACTIVE, &colourBaseSelected);  #else  	GtkStyle *style = gtk_widget_get_style(w); -	if (style == NULL) +	if (style == nullptr)  		return;  	if (!gdk_color_equal(&style->base[GTK_STATE_SELECTED], &style->base[GTK_STATE_ACTIVE]))  		gtk_widget_modify_base(w, GTK_STATE_ACTIVE, &style->base[GTK_STATE_SELECTED]);  	style = gtk_widget_get_style(w); -	if (style == NULL) +	if (style == nullptr)  		return;  	if (!gdk_color_equal(&style->text[GTK_STATE_SELECTED], &style->text[GTK_STATE_ACTIVE]))  		gtk_widget_modify_text(w, GTK_STATE_ACTIVE, &style->text[GTK_STATE_SELECTED]); @@ -1412,7 +1417,7 @@ static void StyleSet(GtkWidget *w, GtkStyle*, void*) {  }  void ListBoxX::Create(Window &parent, int, Point, int, bool, int) { -	if (widCached != 0) { +	if (widCached != nullptr) {  		wid = widCached;  		return;  	} @@ -1425,13 +1430,13 @@ void ListBoxX::Create(Window &parent, int, Point, int, bool, int) {  	wid = widCached = gtk_window_new(GTK_WINDOW_POPUP); -	frame = gtk_frame_new(NULL); +	frame = gtk_frame_new(nullptr);  	gtk_widget_show(PWidget(frame));  	gtk_container_add(GTK_CONTAINER(GetID()), PWidget(frame));  	gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT);  	gtk_container_set_border_width(GTK_CONTAINER(frame), 0); -	scroller = g_object_new(small_scroller_get_type(), NULL); +	scroller = g_object_new(small_scroller_get_type(), nullptr);  	gtk_container_set_border_width(GTK_CONTAINER(scroller), 0);  	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroller),  	                               GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); @@ -1443,7 +1448,7 @@ void ListBoxX::Create(Window &parent, int, Point, int, bool, int) {  		gtk_list_store_new(N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING);  	list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); -	g_signal_connect(G_OBJECT(list), "style-set", G_CALLBACK(StyleSet), NULL); +	g_signal_connect(G_OBJECT(list), "style-set", G_CALLBACK(StyleSet), nullptr);  #if GTK_CHECK_VERSION(3,0,0)  	GtkStyleContext *styleContext = gtk_widget_get_style_context(GTK_WIDGET(list)); @@ -1478,7 +1483,7 @@ void ListBoxX::Create(Window &parent, int, Point, int, bool, int) {  	gtk_tree_view_append_column(GTK_TREE_VIEW(list), column);  	if (g_object_class_find_property(G_OBJECT_GET_CLASS(list), "fixed-height-mode")) -		g_object_set(G_OBJECT(list), "fixed-height-mode", TRUE, NULL); +		g_object_set(G_OBJECT(list), "fixed-height-mode", TRUE, nullptr);  	GtkWidget *widget = PWidget(list);	// No code inside the G_OBJECT macro  	gtk_container_add(GTK_CONTAINER(PWidget(scroller)), widget); @@ -1508,7 +1513,7 @@ void ListBoxX::SetFont(Font &font) {  			// On GTK < 3.21.0 the units are incorrectly parsed, so a font size in points  			// need to use the "px" unit.  Normally we only get fonts in points here, so  			// don't bother to handle the case the font is actually in pixels on < 3.21.0. -			if (gtk_check_version(3, 21, 0) != NULL || // on < 3.21.0 +			if (gtk_check_version(3, 21, 0) != nullptr || // on < 3.21.0  			    pango_font_description_get_size_is_absolute(pfd)) {  				ssFontSetting << "px; ";  			} else { @@ -1517,7 +1522,7 @@ void ListBoxX::SetFont(Font &font) {  			ssFontSetting << "font-weight:"<< pango_font_description_get_weight(pfd) << "; ";  			ssFontSetting << "}";  			gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(cssProvider), -				ssFontSetting.str().c_str(), -1, NULL); +				ssFontSetting.str().c_str(), -1, nullptr);  		}  #else  		gtk_widget_modify_font(PWidget(list), PFont(font)->pfd); @@ -1555,7 +1560,7 @@ PRectangle ListBoxX::GetDesiredRect() {  		// This, apparently unnecessary call, ensures gtk_tree_view_column_cell_get_size  		// returns reasonable values.  #if GTK_CHECK_VERSION(3,0,0) -		gtk_widget_get_preferred_size(GTK_WIDGET(frame), NULL, &req); +		gtk_widget_get_preferred_size(GTK_WIDGET(frame), nullptr, &req);  #else  		gtk_widget_size_request(GTK_WIDGET(frame), &req);  #endif @@ -1585,7 +1590,7 @@ PRectangle ListBoxX::GetDesiredRect() {  		gtk_style_context_get_border(styleContextFrameBorder, stateFlagsFrame, &border_border);  		g_object_unref(styleContextFrameBorder);  #	else // < 3.20 -		if (gtk_check_version(3, 20, 0) == NULL) { +		if (gtk_check_version(3, 20, 0) == nullptr) {  			// default to 1px all around as it's likely what it is, and so we don't miss 2px height  			// on GTK 3.20 when built against an earlier version.  			border_border.top = border_border.bottom = border_border.left = border_border.right = 1; @@ -1611,7 +1616,7 @@ PRectangle ListBoxX::GetDesiredRect() {  		// Add horizontal padding and borders  		int horizontal_separator=0;  		gtk_widget_style_get(PWidget(list), -			"horizontal-separator", &horizontal_separator, NULL); +			"horizontal-separator", &horizontal_separator, nullptr);  		rc.right += horizontal_separator;  #if GTK_CHECK_VERSION(3,0,0)  		rc.right += (padding.left + padding.right @@ -1627,7 +1632,7 @@ PRectangle ListBoxX::GetDesiredRect() {  			GtkWidget *vscrollbar =  				gtk_scrolled_window_get_vscrollbar(GTK_SCROLLED_WINDOW(scroller));  #if GTK_CHECK_VERSION(3,0,0) -			gtk_widget_get_preferred_size(vscrollbar, NULL, &req); +			gtk_widget_get_preferred_size(vscrollbar, nullptr, &req);  #else  			gtk_widget_size_request(vscrollbar, &req);  #endif @@ -1663,15 +1668,15 @@ static void init_pixmap(ListImage *list_image) {                                                           list_image->rgba_data->GetWidth(),                                                           list_image->rgba_data->GetHeight(),                                                           list_image->rgba_data->GetWidth() * 4, -                                                         NULL, -                                                         NULL); +                                                         nullptr, +                                                         nullptr);  	}  }  #define SPACING 5  void ListBoxX::Append(char *s, int type) { -	ListImage *list_image = NULL; +	ListImage *list_image = nullptr;  	if ((type >= 0) && pixhash) {  		list_image = static_cast<ListImage *>(g_hash_table_lookup((GHashTable *) pixhash  		             , (gconstpointer) GINT_TO_POINTER(type))); @@ -1681,7 +1686,7 @@ void ListBoxX::Append(char *s, int type) {  		GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(list)));  	gtk_list_store_append(GTK_LIST_STORE(store), &iter);  	if (list_image) { -		if (NULL == list_image->pixbuf) +		if (nullptr == list_image->pixbuf)  			init_pixmap(list_image);  		if (list_image->pixbuf) {  			gtk_list_store_set(GTK_LIST_STORE(store), &iter, @@ -1711,7 +1716,7 @@ void ListBoxX::Append(char *s, int type) {  int ListBoxX::Length() {  	if (wid)  		return gtk_tree_model_iter_n_children(gtk_tree_view_get_model -											   (GTK_TREE_VIEW(list)), NULL); +											   (GTK_TREE_VIEW(list)), nullptr);  	return 0;  } @@ -1726,7 +1731,7 @@ void ListBoxX::Select(int n) {  		return;  	} -	bool valid = gtk_tree_model_iter_nth_child(model, &iter, NULL, n) != FALSE; +	bool valid = gtk_tree_model_iter_nth_child(model, &iter, nullptr, n) != FALSE;  	if (valid) {  		gtk_tree_selection_select_iter(selection, &iter); @@ -1777,7 +1782,7 @@ int ListBoxX::GetSelection() {  	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list));  	if (gtk_tree_selection_get_selected(selection, &model, &iter)) {  		GtkTreePath *path = gtk_tree_model_get_path(model, &iter); -		int *indices = gtk_tree_path_get_indices(path); +		const int *indices = gtk_tree_path_get_indices(path);  		// Don't free indices.  		if (indices)  			index = indices[0]; @@ -1807,10 +1812,10 @@ int ListBoxX::Find(const char *prefix) {  }  void ListBoxX::GetValue(int n, char *value, int len) { -	char *text = NULL; +	char *text = nullptr;  	GtkTreeIter iter;  	GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(list)); -	bool valid = gtk_tree_model_iter_nth_child(model, &iter, NULL, n) != FALSE; +	bool valid = gtk_tree_model_iter_nth_child(model, &iter, nullptr, n) != FALSE;  	if (valid) {  		gtk_tree_model_get(model, &iter, TEXT_COLUMN, &text, -1);  	} @@ -1839,7 +1844,7 @@ void ListBoxX::RegisterRGBA(int type, RGBAImage *image) {  		// Drop icon already registered  		if (list_image->pixbuf)  			g_object_unref(list_image->pixbuf); -		list_image->pixbuf = NULL; +		list_image->pixbuf = nullptr;  		list_image->rgba_data = image;  	} else {  		list_image = g_new0(ListImage, 1); @@ -1872,7 +1877,7 @@ void ListBoxX::SetList(const char *listText, char separator, char typesep) {  	int count = strlen(listText) + 1;  	std::vector<char> words(listText, listText+count);  	char *startword = &words[0]; -	char *numword = NULL; +	char *numword = nullptr;  	int i = 0;  	for (; words[i]; i++) {  		if (words[i] == separator) { @@ -1881,7 +1886,7 @@ void ListBoxX::SetList(const char *listText, char separator, char typesep) {  				*numword = '\0';  			Append(startword, numword?atoi(numword + 1):-1);  			startword = &words[0] + i + 1; -			numword = NULL; +			numword = nullptr;  		} else if (words[i] == typesep) {  			numword = &words[0] + i;  		} @@ -1893,7 +1898,7 @@ void ListBoxX::SetList(const char *listText, char separator, char typesep) {  	}  } -Menu::Menu() noexcept : mid(0) {} +Menu::Menu() noexcept : mid(nullptr) {}  void Menu::CreatePopUp() {  	Destroy(); @@ -1904,7 +1909,7 @@ void Menu::CreatePopUp() {  void Menu::Destroy() {  	if (mid)  		g_object_unref(G_OBJECT(mid)); -	mid = 0; +	mid = nullptr;  }  #if !GTK_CHECK_VERSION(3,22,0) @@ -1920,12 +1925,12 @@ void Menu::Show(Point pt, Window &w) {  	gtk_widget_show_all(GTK_WIDGET(widget));  #if GTK_CHECK_VERSION(3,22,0)  	// Rely on GTK+ to do the right thing with positioning -	gtk_menu_popup_at_pointer(widget, NULL); +	gtk_menu_popup_at_pointer(widget, nullptr);  #else  	GdkRectangle rcMonitor = MonitorRectangleForWidget(PWidget(w.GetID()));  	GtkRequisition requisition;  #if GTK_CHECK_VERSION(3,0,0) -	gtk_widget_get_preferred_size(GTK_WIDGET(widget), NULL, &requisition); +	gtk_widget_get_preferred_size(GTK_WIDGET(widget), nullptr, &requisition);  #else  	gtk_widget_size_request(GTK_WIDGET(widget), &requisition);  #endif @@ -1935,7 +1940,7 @@ void Menu::Show(Point pt, Window &w) {  	if ((pt.y + requisition.height) > rcMonitor.y + rcMonitor.height) {  		pt.y = rcMonitor.y + rcMonitor.height - requisition.height;  	} -	gtk_menu_popup(widget, NULL, NULL, MenuPositionFunc, +	gtk_menu_popup(widget, nullptr, nullptr, MenuPositionFunc,  		GINT_TO_POINTER((static_cast<int>(pt.y) << 16) | static_cast<int>(pt.x)), 0,  		gtk_get_current_event_time());  #endif @@ -1945,31 +1950,31 @@ class DynamicLibraryImpl : public DynamicLibrary {  protected:  	GModule* m;  public: -	explicit DynamicLibraryImpl(const char *modulePath) { +	explicit DynamicLibraryImpl(const char *modulePath) noexcept {  		m = g_module_open(modulePath, G_MODULE_BIND_LAZY);  	}  	~DynamicLibraryImpl() override { -		if (m != NULL) +		if (m != nullptr)  			g_module_close(m);  	}  	// Use g_module_symbol to get a pointer to the relevant function.  	Function FindFunction(const char *name) override { -		if (m != NULL) { -			gpointer fn_address = NULL; +		if (m != nullptr) { +			gpointer fn_address = nullptr;  			gboolean status = g_module_symbol(m, name, &fn_address);  			if (status)  				return static_cast<Function>(fn_address);  			else -				return NULL; +				return nullptr;  		} else { -			return NULL; +			return nullptr;  		}  	}  	bool IsValid() override { -		return m != NULL; +		return m != nullptr;  	}  }; | 
