[Pkg-sugar-commit] [sugar-toolkit-gtk3] 35/37: Solve errors in ColorToolButton to enable activities to use it

Jonas Smedegaard dr at jones.dk
Sat Apr 18 17:19:58 UTC 2015


This is an automated email from the git hooks/post-receive script.

js pushed a commit to tag v0.96.5
in repository sugar-toolkit-gtk3.

commit 0c50e0eb1fd95b7ed8d2883b730764fa380effc2
Author: Manuel Quiñones <manuq at laptop.org>
Date:   Wed Aug 8 10:32:31 2012 -0300

    Solve errors in ColorToolButton to enable activities to use it
    
    This patch solves the following problems:
    
    * API changed in the drag and drop code in Gtk.
      Drag and drop is not working yet (SL #3796)
      but the code needed to enable drag and drop is ported.
    * Changes in the way to get color information from the theme
      this is because Gtk.Style was deprecated by Gtk.StyleContext.
    * The internal button was not visible.
    
    Signed-of-by: Gonzalo Odiard <gonzalo at laptop.org>
    
    -----
    v2: Fixed comment based on manuq feedback, and add a note
        about the non working drag and drop.
---
 src/sugar3/graphics/colorbutton.py | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/sugar3/graphics/colorbutton.py b/src/sugar3/graphics/colorbutton.py
index c21da47..95d023a 100644
--- a/src/sugar3/graphics/colorbutton.py
+++ b/src/sugar3/graphics/colorbutton.py
@@ -63,21 +63,21 @@ class _ColorButton(Gtk.Button):
 
         GObject.GObject.__init__(self, **kwargs)
 
+        # FIXME Drag and drop is not working, SL #3796
         if self._accept_drag:
-            Gtk.drag_dest_set(self, Gtk.DEST_DEFAULT_MOTION |
-                               Gtk.DEST_DEFAULT_HIGHLIGHT |
-                               Gtk.DEST_DEFAULT_DROP,
-                               [('application/x-color', 0, 0)],
-                               Gdk.DragAction.COPY)
-        self.drag_source_set(Gdk.EventMask.BUTTON1_MASK | Gdk.EventMask.BUTTON3_MASK,
-                             [('application/x-color', 0, 0)],
-                             Gdk.DragAction.COPY)
+            self.drag_dest_set(Gtk.DestDefaults.MOTION |
+                    Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP,
+                    [Gtk.TargetEntry.new('application/x-color', 0, 0)],
+                    Gdk.DragAction.COPY)
+        self.drag_source_set(Gdk.ModifierType.BUTTON1_MASK |
+                    Gdk.ModifierType.BUTTON3_MASK,
+                    [Gtk.TargetEntry.new('application/x-color', 0, 0)],
+                    Gdk.DragAction.COPY)
         self.connect('drag_data_received', self.__drag_data_received_cb)
         self.connect('drag_data_get', self.__drag_data_get_cb)
 
         self._preview.fill_color = get_svg_color_string(self._color)
-        self._preview.stroke_color = \
-            get_svg_color_string(self.style.fg[Gtk.StateType.NORMAL])
+        self._preview.stroke_color = self._get_fg_style_color_str()
         self.set_image(self._preview)
 
         if self._has_palette and self._has_invoker:
@@ -103,8 +103,14 @@ class _ColorButton(Gtk.Button):
         self.color = self._palette.color
 
     def do_style_set(self, previous_style):
-        self._preview.stroke_color = \
-            get_svg_color_string(self.style.fg[Gtk.StateType.NORMAL])
+        self._preview.stroke_color = self._get_fg_style_color_str()
+
+    def _get_fg_style_color_str(self):
+        context = self.get_style_context()
+        fg_color = context.get_color(Gtk.StateType.NORMAL)
+        # the color components are stored as float values between 0.0 and 1.0
+        return '#%.2X%.2X%.2X' % (fg_color.red * 255, fg_color.green * 255,
+                              fg_color.blue * 255)
 
     def do_clicked(self):
         if self._palette:
@@ -438,6 +444,7 @@ class ColorToolButton(Gtk.ToolItem):
         # Replace it with a ColorButton
         color_button = _ColorButton(icon_name=icon_name, has_invoker=False)
         self.add(color_button)
+        color_button.show()
 
         # The following is so that the behaviour on the toolbar is correct.
         color_button.set_relief(Gtk.ReliefStyle.NONE)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-sugar/sugar-toolkit-gtk3.git



More information about the pkg-sugar-commit mailing list