rpms/gtk-nodoka-engine/devel gtk-nodoka-engine-handle-selection.patch, NONE, 1.1 gtk-nodoka-engine-scale-trough.patch, NONE, 1.1 gtk-nodoka-engine.spec, 1.25, 1.26

Martin Sourada mso at fedoraproject.org
Tue Dec 30 16:54:10 UTC 2008


Author: mso

Update of /cvs/extras/rpms/gtk-nodoka-engine/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv15982

Modified Files:
	gtk-nodoka-engine.spec 
Added Files:
	gtk-nodoka-engine-handle-selection.patch 
	gtk-nodoka-engine-scale-trough.patch 
Log Message:


Add support for GtkScale trough-side-details and fill-level (rhbz #477941)

Support selection and hilight coloring for separator (rhbz #478443)



gtk-nodoka-engine-handle-selection.patch:

--- NEW FILE gtk-nodoka-engine-handle-selection.patch ---
diff -up gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c.handle-selection gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c
--- gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c.handle-selection	2008-12-30 13:10:05.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c	2008-12-30 13:09:16.000000000 +0100
@@ -1727,6 +1727,15 @@ nodoka_draw_handle (cairo_t * cr, const 
 					int height)
 {
 	NodokaRGB *dark = (NodokaRGB *) & colors->shade[3];
+	
+	NodokaRGB *bg = (NodokaRGB *) & colors->bg[widget->state_type];
+	
+	if (handle->type == NDK_HANDLE_SPLITTER)
+	{
+		cairo_set_source_rgb (cr, bg->r, bg->g, bg->b);
+		cairo_rectangle (cr, x, y, width, height);
+		cairo_fill (cr);
+	}
 
 	int bar_height;
 	int i;

gtk-nodoka-engine-scale-trough.patch:

--- NEW FILE gtk-nodoka-engine-scale-trough.patch ---
diff -up gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c.scale-trough gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c
--- gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c.scale-trough	2008-11-02 09:30:13.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_draw.c	2008-12-26 23:56:29.000000000 +0100
@@ -453,6 +453,7 @@ nodoka_draw_entry (cairo_t * cr,
 	}
 }
 
+#define TROUGH_SIZE 6
 void
 nodoka_draw_scale_trough (cairo_t * cr,
 						  const NodokaColors * colors,
@@ -460,77 +461,95 @@ nodoka_draw_scale_trough (cairo_t * cr,
 						  const SliderParameters * slider,
 						  int x, int y, int width, int height)
 {
-	int fill_x, fill_y, fill_width, fill_height;	
-	int trough_width, trough_height;
-	double translate_x, translate_y;
-	int fill_size = slider->fill_size;
-	int TROUGH_SIZE = 6;
+	int     trough_width, trough_height;
+	double  translate_x, translate_y;
+
+	cairo_save (cr);
 
 	if (slider->horizontal)
 	{
-		if (fill_size > width - 3)
-			fill_size = width - 3;
-
-		fill_x = slider->inverted ? width - fill_size - 3 : 0;
-		fill_y = 0;
-		fill_width = fill_size;
-		fill_height = TROUGH_SIZE - 2;
-
-		trough_width = width - 3;
-		trough_height = TROUGH_SIZE - 2;
-
-		translate_x = x + 0.5;
-		translate_y = y + 0.5 + (height / 2) - (TROUGH_SIZE / 2);
+		trough_width  = width;
+		trough_height = TROUGH_SIZE;
+		
+		translate_x   = x;
+		translate_y   = y + (height/2) - (TROUGH_SIZE/2);
 	}
 	else
 	{
-		if (fill_size > height - 3)
-			fill_size = height - 3;
-
-		fill_x = 0;
-		fill_y = slider->inverted ? height - fill_size - 3 : 0;
-		fill_width = TROUGH_SIZE - 2;
-		fill_height = fill_size;
-
-		trough_width = TROUGH_SIZE - 2;
-		trough_height = height - 3;
-
-		translate_x = x + 0.5 + (width / 2) - (TROUGH_SIZE / 2);
-		translate_y = y + 0.5;
+		trough_width  = TROUGH_SIZE;
+		trough_height = height;
+		
+		translate_x   = x + (width/2) - (TROUGH_SIZE/2);
+		translate_y  = y;
 	}
 
 	cairo_set_line_width (cr, 1.0);
 	cairo_translate (cr, translate_x, translate_y);
 
-	cairo_translate (cr, 1, 1);
-
-	nodoka_scale_draw_gradient (cr, &colors->shade[3],	
-								&colors->shade[5],	
-								0, 0, trough_width, trough_height,
-								TRUE, slider->horizontal);
-
-	/* we want to draw the fill gradient using a direct gradient call */
-	nodoka_set_gradient (cr, &colors->spot[1], DARK_BOTTOM_HILIGHT,
-						  DARK_TOP_HILIGHT, GRADIENT_CENTER,
-						  (slider->horizontal ? 0 : fill_width),
-						  (slider->horizontal ? fill_height : 0), widget->gradients, FALSE,
-						  1.0);
-	cairo_rectangle (cr, fill_x + 0.5, fill_y + 0.5, fill_width - 1,
-					 fill_height - 1);
-	cairo_fill (cr);
-
-	/* Set the right border color */
-	cairo_rectangle (cr, fill_x, fill_y, fill_width, fill_height);
-	cairo_set_source_rgba (cr, colors->spot[2].r, colors->spot[2].g,
-						   colors->spot[2].b, 0.8);
-	cairo_stroke (cr);
+	/* Drawing Fill Level */
+	if (slider->fill_level)
+	{
+		NodokaRGB *fill = (NodokaRGB *) & colors->spot[1];
+		
+		cairo_rectangle (cr, 1.5, 1.5, trough_width - 3, trough_height - 3);
+		
+		nodoka_set_gradient (cr, fill, HOLLOW_BOTTOM_HILIGHT, 
+							HOLLOW_TOP_HILIGHT, GRADIENT_CENTER, 
+							(slider->horizontal ? 0 : trough_width),
+							(slider->horizontal ? trough_height : 0),
+							widget->gradients, TRUE, 0.35);
+		cairo_fill_preserve (cr);
+		
+		cairo_set_source_rgba (cr, colors->spot[2].r, colors->spot[2].g, 
+								colors->spot[2].b, 0.28);
+		cairo_stroke (cr);
+	}
+	/* Drawing Fill */
+	else if (slider->lower)
+	{
+		NodokaRGB *fill = (NodokaRGB *) & colors->spot[1];
+		
+		cairo_rectangle (cr, 1.5, 1.5, trough_width - 3, trough_height - 3);
+		
+		nodoka_set_gradient (cr, fill, HOLLOW_BOTTOM_HILIGHT, 
+							HOLLOW_TOP_HILIGHT, GRADIENT_CENTER, 
+							(slider->horizontal ? 0 : trough_width),
+							(slider->horizontal ? trough_height : 0),
+							widget->gradients, FALSE, 1.0);
+		cairo_fill_preserve (cr);
+		
+		cairo_set_source_rgba (cr, colors->spot[2].r, colors->spot[2].g, 
+								colors->spot[2].b, 0.8);
+		cairo_stroke (cr);
+	}
+	/* Drawing Trough */
+	else
+	{
+		NodokaRGB *bg = (NodokaRGB *) & colors->shade[3];
+		
+		cairo_rectangle (cr, 1.5, 1.5, trough_width - 3, trough_height - 3);
+		
+		nodoka_set_gradient (cr, bg, HOLLOW_BOTTOM_HILIGHT, 
+							HOLLOW_TOP_HILIGHT, GRADIENT_CENTER, 
+							(slider->horizontal ? 0 : trough_width),
+							(slider->horizontal ? trough_height : 0),
+							widget->gradients, FALSE, 1.0);
+		cairo_fill_preserve (cr);
+		
+		cairo_set_source_rgba (cr, colors->shade[5].r, colors->shade[5].g, 
+								colors->shade[5].b, 0.8);
+		cairo_stroke (cr);
+		
+		
+		/* Draw shadow  */
+		cairo_move_to (cr, 2.5, trough_height - 2.5);
+		cairo_line_to (cr, 2.5, 2.5);
+		cairo_line_to (cr, trough_width - 2.5, 2.5);
+		cairo_set_source_rgba (cr, 0.2, 0.2, 0.2, 0.1);
+		cairo_stroke (cr);
+	}
 
-	/* Draw shadow */
-	cairo_move_to (cr, 1, trough_height - 2);
-	cairo_line_to (cr, 1, 1);
-	cairo_line_to (cr, trough_width - 2, 1);
-	cairo_set_source_rgba (cr, 0.2, 0.2, 0.2, 0.1);
-	cairo_stroke (cr);
+	cairo_restore (cr);
 }
 
 void
diff -up gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_style.c.scale-trough gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_style.c
--- gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_style.c.scale-trough	2008-11-02 09:26:58.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_style.c	2008-12-26 23:56:21.000000000 +0100
@@ -728,37 +728,23 @@ nodoka_style_draw_box (DRAW_ARGS)
 			
 	}
 	else if (DETAIL ("spinbutton"))	{ }
-	else if (DETAIL ("trough") && widget && GTK_IS_SCALE (widget))
+	else if (detail && g_str_has_prefix (detail, "trough") && widget && GTK_IS_SCALE (widget))
 	{
-		GtkAdjustment *adjustment =
-			gtk_range_get_adjustment (GTK_RANGE (widget));
 		WidgetParameters params;
 		SliderParameters slider;
-		gint slider_length;
 
-		gtk_widget_style_get (widget, "slider-length", &slider_length, NULL);
 		nodoka_set_widget_parameters (widget, style, state_type, &params);
 		params.corners = NDK_CORNER_NONE;
 
-		slider.inverted = gtk_range_get_inverted (GTK_RANGE (widget));
+		slider.lower = DETAIL ("trough-lower");
+		slider.fill_level = DETAIL ("trough-fill-level") || DETAIL ("trough-fill-level-full");
+
 		slider.horizontal =
 			(GTK_RANGE (widget)->orientation == GTK_ORIENTATION_HORIZONTAL);
-		if ((adjustment->upper - adjustment->page_size - 
-                     adjustment->lower) != 0)
-			slider.fill_size = 
-				((slider.horizontal ? width : height) - 
-                                 slider_length) * 
-				((adjustment->value  - adjustment->lower) / 
-                                 (adjustment->upper - adjustment->page_size - 
-                                  adjustment->lower)) + slider_length / 2;
-		else
-			slider.fill_size = 0;
-		if (slider.horizontal)
-			slider.inverted =
-				slider.inverted != (nodoka_get_direction (widget) ==
-									GTK_TEXT_DIR_RTL);
+
 		slider.focus.inner = nodoka_style->focus_inner;
 		slider.focus.fill = nodoka_style->focus_fill;
+
 		nodoka_draw_scale_trough (cr, &nodoka_style->colors, &params, &slider,
 								  x, y, width, height);
 	}
@@ -966,8 +952,8 @@ nodoka_style_draw_box (DRAW_ARGS)
 			params.corners = NDK_CORNER_NONE;
 
 		SliderParameters slider;
-		slider.inverted = FALSE;
-		slider.fill_size = 0;
+		//slider.inverted = FALSE;
+		//slider.fill_size = 0;
 		slider.horizontal = horizontal;
 		slider.focus.inner = nodoka_style->focus_inner;
 		slider.focus.fill = nodoka_style->focus_fill;
diff -up gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_types.h.scale-trough gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_types.h
--- gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_types.h.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKEngine/nodoka_types.h	2008-12-26 23:56:21.000000000 +0100
@@ -188,9 +188,9 @@ typedef struct
 
 typedef struct
 {
-	boolean inverted;
-	int fill_size;
+	boolean lower;
 	boolean horizontal;
+	boolean fill_level; 
 	FocusParameters focus;
 } SliderParameters;
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Aqua/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Aqua/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Aqua/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Aqua/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Gilouche/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Gilouche/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Gilouche/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Gilouche/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Looks/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Looks/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Looks/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Looks/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Midnight/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Midnight/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Midnight/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Midnight/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Rounded/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Rounded/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Rounded/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Rounded/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Silver/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Silver/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Silver/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Silver/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 
diff -up gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Squared/gtk-2.0/gtkrc.scale-trough gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Squared/gtk-2.0/gtkrc
--- gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Squared/gtk-2.0/gtkrc.scale-trough	2008-11-01 11:29:33.000000000 +0100
+++ gtk-nodoka-engine-0.7.2/src/GTKThemes/Nodoka-Squared/gtk-2.0/gtkrc	2008-12-26 23:56:21.000000000 +0100
@@ -21,6 +21,7 @@ style "fedora-default"
   	GtkRange::stepper_spacing	= 0
 
 	GtkScale::slider-length		= 28
+	GtkScale::trough-side-details = 1
 
 	GtkPaned::handle_size		= 6
 


Index: gtk-nodoka-engine.spec
===================================================================
RCS file: /cvs/extras/rpms/gtk-nodoka-engine/devel/gtk-nodoka-engine.spec,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- gtk-nodoka-engine.spec	2 Nov 2008 11:01:10 -0000	1.25
+++ gtk-nodoka-engine.spec	30 Dec 2008 16:53:40 -0000	1.26
@@ -3,14 +3,15 @@
 
 Name:           gtk-nodoka-engine
 Version:        0.7.2
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        The Nodoka GTK Theme Engine
 
 Group:          System Environment/Libraries
 License:        GPLv2+
 URL:            http://fedorahosted.org/nodoka
 Source0:        https://fedorahosted.org/releases/n/o/gtk-nodoka-engine-%{version}.tar.gz
-#Patch0:         gtk-nodoka-engine-leak.patch
+Patch0:         %{name}-scale-trough.patch
+Patch1:         %{name}-handle-selection.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  gtk2-devel
@@ -36,7 +37,8 @@
 
 %prep
 %setup -q
-#%patch0 -p1 -b .leak
+%patch0 -p1 -b .scale-trough
+%patch1 -p1 -b .handle-selection
 
 %build
 %configure
@@ -68,6 +70,10 @@
 
 
 %changelog
+* Tue Dec 30 2008 Martin Sourada <mso at fedoraproject.org> - 0.7.2-2
+- Add support for GtkScale trough-side-details and fill-level (rhbz #477941)
+- Support selection and hilight coloring for separator (rhbz #478443)
+
 * Sun Nov 02 2008 Martin Sourada <mso at fedoraproject.org> - 0.7.2-1
 - New upstream release, fix misrender in menus on some systems (rhbz #469398)
 




More information about the fedora-extras-commits mailing list