Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-release-src > by-pkgid > 838409f06098f25972c735bffbbada7c > files > 14

gparted-0.33.0-2.mga7.src.rpm

From 5fb58f8877464511716d128702d58d9f1c566a99 Mon Sep 17 00:00:00 2001
From: Luca Bacci <luca.bacci982@gmail.com>
Date: Fri, 3 Aug 2018 18:50:40 +0200
Subject: [PATCH 10/26] port-to-gtk3: Use Gdk::Cursor via Glib::RefPtr<> (#7)

Starting from Gtkmm3 Gdk::Cursor objects cannot be constructed directly,
but instead you have to get a smart pointer to an instance by calling
the static member function Gdk::Cursor::create().

Gdk::Cursor::create() returns a Glib::RefPtr<Gdk::Cursor> object.

Gtkmm3 always uses Glib::RefPtr<Gdk::Cursor> in its interface and never
plain Gdk::Cursor.

Reference:

[1] Programming with gtkmm3, Changes in gtkmm3:
    https://developer.gnome.org/gtkmm-tutorial/3.24/changes-gtkmm3.html.en
    "... Gdk::Cursor are now used via Glib::RefPtr."

Closes #7 - Port to Gtk3
---
 include/Frame_Resizer_Base.h  |  3 ++-
 src/DialogManageFlags.cc      |  2 +-
 src/Frame_Resizer_Base.cc     | 12 +++++-------
 src/Frame_Resizer_Extended.cc |  4 ++--
 src/Win_GParted.cc            |  2 +-
 5 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/include/Frame_Resizer_Base.h b/include/Frame_Resizer_Base.h
index 28ff6381..7a52275d 100644
--- a/include/Frame_Resizer_Base.h
+++ b/include/Frame_Resizer_Base.h
@@ -82,7 +82,8 @@ protected:
 
 	std::vector<Gdk::Point> arrow_points;
 	
-	Gdk::Cursor *cursor_resize, *cursor_move;
+	Glib::RefPtr<Gdk::Cursor> cursor_resize;
+	Glib::RefPtr<Gdk::Cursor> cursor_move;
 	
 	int temp_x, temp_y ;
 	bool fixed_start; //a fixed start disables moving the start and thereby the whole move functionality..
diff --git a/src/DialogManageFlags.cc b/src/DialogManageFlags.cc
index edb502cf..1057d7e9 100644
--- a/src/DialogManageFlags.cc
+++ b/src/DialogManageFlags.cc
@@ -74,7 +74,7 @@ void DialogManageFlags::load_treeview()
 
 void DialogManageFlags::on_flag_toggled( const Glib::ustring & path ) 
 {
-	get_window() ->set_cursor( Gdk::Cursor( Gdk::WATCH ) ) ;
+	get_window()->set_cursor(Gdk::Cursor::create(Gdk::WATCH));
 	set_sensitive( false ) ;
 	while ( Gtk::Main::events_pending() )
 		Gtk::Main::iteration() ;
diff --git a/src/Frame_Resizer_Base.cc b/src/Frame_Resizer_Base.cc
index 7649ec36..86a737d7 100644
--- a/src/Frame_Resizer_Base.cc
+++ b/src/Frame_Resizer_Base.cc
@@ -59,8 +59,8 @@ void Frame_Resizer_Base::init()
 	color_background.set("darkgrey");
 	color_arrow_rectangle.set("lightgrey");
 
-	cursor_resize = new Gdk::Cursor( Gdk::SB_H_DOUBLE_ARROW ) ; 
-	cursor_move   = new Gdk::Cursor( Gdk::FLEUR ) ; 
+	cursor_resize = Gdk::Cursor::create(Gdk::SB_H_DOUBLE_ARROW);
+	cursor_move   = Gdk::Cursor::create(Gdk::FLEUR);
 	  
 	GRIP_MOVE = GRIP_LEFT = GRIP_RIGHT = false;
 	X_END = 0;
@@ -306,18 +306,18 @@ bool Frame_Resizer_Base::drawingarea_on_mouse_motion( GdkEventMotion * ev )
 		     ev ->x <= X_START &&
 		     ev ->y >= 5 &&
 		     ev ->y <= 45 )
-			drawingarea .get_parent_window() ->set_cursor( *cursor_resize ) ;
+			drawingarea.get_parent_window()->set_cursor(cursor_resize);
 		//right grip
 		else if ( ev ->x >= X_END &&
 			  ev ->x <= X_END + GRIPPER &&
 			  ev ->y >= 5 && 
 			  ev ->y <= 45 )
-			drawingarea .get_parent_window() ->set_cursor( *cursor_resize ) ;
+			drawingarea.get_parent_window()->set_cursor(cursor_resize);
 		//move grip
 		else if ( ! fixed_start && 
 			  ev ->x >= X_START && 
 			  ev ->x <= X_END )
-			drawingarea .get_parent_window() ->set_cursor( *cursor_move ) ;
+			drawingarea.get_parent_window()->set_cursor(cursor_move);
 		//normal pointer 
 		else								
 			drawingarea .get_parent_window() ->set_cursor() ;		
@@ -451,8 +451,6 @@ void Frame_Resizer_Base::redraw()
 
 Frame_Resizer_Base::~Frame_Resizer_Base()
 {
-	delete cursor_resize;
-	delete cursor_move;
 }
 
 
diff --git a/src/Frame_Resizer_Extended.cc b/src/Frame_Resizer_Extended.cc
index c1e80d9d..284c4c94 100644
--- a/src/Frame_Resizer_Extended.cc
+++ b/src/Frame_Resizer_Extended.cc
@@ -143,13 +143,13 @@ bool Frame_Resizer_Extended::drawingarea_on_mouse_motion( GdkEventMotion * ev )
 		     ev ->x <= X_START &&
 		     ev ->y >= 5 &&
 		     ev ->y <= 45 ) 
-			drawingarea .get_parent_window() ->set_cursor( *cursor_resize ) ;
+			drawingarea.get_parent_window()->set_cursor(cursor_resize);
 		//right grip
 		else if (  ev ->x >= X_END &&
 			   ev ->x <= X_END + GRIPPER &&
 			   ev ->y >= 5 &&
 			   ev ->y <= 45 ) 
-			drawingarea .get_parent_window() ->set_cursor( *cursor_resize ) ;
+			drawingarea.get_parent_window()->set_cursor(cursor_resize);
 		//normal pointer
 		else 
 			drawingarea .get_parent_window() ->set_cursor() ;		
diff --git a/src/Win_GParted.cc b/src/Win_GParted.cc
index aacdc888..10dcbb17 100644
--- a/src/Win_GParted.cc
+++ b/src/Win_GParted.cc
@@ -3095,7 +3095,7 @@ void Win_GParted::activate_manage_flags()
 	g_assert( selected_partition_ptr != NULL );  // Bug: Partition callback without a selected partition
 	g_assert( valid_display_partition_ptr( selected_partition_ptr ) );  // Bug: Not pointing at a valid display partition object
 
-	get_window() ->set_cursor( Gdk::Cursor( Gdk::WATCH ) ) ;
+	get_window()->set_cursor(Gdk::Cursor::create(Gdk::WATCH));
 	while ( Gtk::Main::events_pending() )
 		Gtk::Main::iteration() ;
 
-- 
2.21.0