SF.net SVN: geany: [1648] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Wed Jun 27 19:07:04 UTC 2007


Revision: 1648
          http://svn.sourceforge.net/geany/?rev=1648&view=rev
Author:   eht16
Date:     2007-06-27 12:07:03 -0700 (Wed, 27 Jun 2007)

Log Message:
-----------
Replace existing selection with chosen colour.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/callbacks.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-06-27 18:43:23 UTC (rev 1647)
+++ trunk/ChangeLog	2007-06-27 19:07:03 UTC (rev 1648)
@@ -3,6 +3,7 @@
  * src/callbacks.c, src/dialogs.c:
    Add palette to Colour Chooser Dialog.
    Fix picking colours starting with '#'.
+   Replace existing selection with chosen colour.
 
 
 2007-06-27  Nick Treleaven  <nick.treleaven at btinternet.com>

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2007-06-27 18:43:23 UTC (rev 1647)
+++ trunk/src/callbacks.c	2007-06-27 19:07:03 UTC (rev 1648)
@@ -994,7 +994,27 @@
 			GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(app->open_colorsel)->colorsel), &color);
 
 	hex = utils_get_hex_from_color(&color);
-	sci_add_text(doc_list[idx].sci, hex);
+	// add the selected colour into the doc, prefer #... format unless there is a selection
+	// starting with 0x...
+	if (sci_can_copy(doc_list[idx].sci))
+	{
+		gint start = sci_get_selection_start(doc_list[idx].sci);
+		gchar *replacement = hex;
+
+		if (sci_get_char_at(doc_list[idx].sci, start) == '0' &&
+			sci_get_char_at(doc_list[idx].sci, start + 1) == 'x')
+		{
+			sci_set_selection_start(doc_list[idx].sci, start + 2);
+			replacement++; // skip the leading '#'
+		}
+		else if (sci_get_char_at(doc_list[idx].sci, start - 1) == '#')
+		{	// double clicking something like #00ffff may only select 00ffff because of wordchars
+			replacement++; // so skip the '#' to only replace the colour value
+		}
+		sci_replace_sel(doc_list[idx].sci, replacement);
+	}
+	else
+		sci_add_text(doc_list[idx].sci, hex);
 	g_free(hex);
 }
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list