New patch sent, I don't know why, but the In-Reply-To parameter does not add the message to this thread.
Gonzalo On Fri, Apr 20, 2012 at 2:34 PM, Simon Schampijer <[email protected]>wrote: > Great both new versions of your patches do what they describe they would > do :) > > There is one trace in the shell.log related to the clipboard when the > clipboard owner changes, a TypeError, targets is None. > > Please have a look at it, all the rest looks already really good. > > Regards, > Simon > > > > On 04/20/2012 04:17 PM, [email protected] wrote: > >> From: Gonzalo Odiard<[email protected]> >> >> This patch change the behaviour of the clipboard tray, >> every object is added only one time, if already exist, >> the already added object is selected. >> Is needed because a bad interaction between the clipboard in write and >> the text to speech feature. See the ticket for more information. >> >> v2: Select the already added object if needed, as sugested by Sasha. >> v3: Show the notification when copy a already existing object, as >> sugested by Gary >> >> Signed-off-by: Gonzalo Odiard<[email protected]> >> --- >> src/jarabe/frame/clipboard.py | 17 +++++++++++++---- >> src/jarabe/frame/**clipboardicon.py | 18 ++++++++++-------- >> src/jarabe/frame/**clipboardpanelwindow.py | 5 ++++- >> src/jarabe/frame/**clipboardtray.py | 7 +++++++ >> 4 files changed, 34 insertions(+), 13 deletions(-) >> >> diff --git a/src/jarabe/frame/clipboard.**py >> b/src/jarabe/frame/clipboard.**py >> index be2b902..ae1ceb9 100644 >> --- a/src/jarabe/frame/clipboard.**py >> +++ b/src/jarabe/frame/clipboard.**py >> @@ -36,7 +36,9 @@ class Clipboard(gobject.GObject): >> 'object-added': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, >> ([object])), >> 'object-deleted': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, >> - ([int])), >> + ([long])), >> + 'object-selected': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, >> + ([long])), >> 'object-state-changed': (gobject.SIGNAL_RUN_FIRST, >> gobject.TYPE_NONE, >> ([object])), >> } >> @@ -51,9 +53,16 @@ class Clipboard(gobject.GObject): >> self._next_id += 1 >> return self._next_id >> >> - def add_object(self, name): >> - logging.debug('Clipboard.add_**object') >> - object_id = self._get_next_object_id() >> + def add_object(self, name, data_hash=None): >> + logging.debug('Clipboard.add_**object hash %s', data_hash) >> + if data_hash is None: >> + object_id = self._get_next_object_id() >> + else: >> + object_id = data_hash >> + if object_id in self._objects: >> + logging.debug('Object rejected, already exist') >> + self.emit('object-selected', object_id) >> + return None >> self._objects[object_id] = ClipboardObject(object_id, name) >> self.emit('object-added', self._objects[object_id]) >> return object_id >> diff --git a/src/jarabe/frame/**clipboardicon.py b/src/jarabe/frame/** >> clipboardicon.py >> index aa72d8a..7bc4dc3 100644 >> --- a/src/jarabe/frame/**clipboardicon.py >> +++ b/src/jarabe/frame/**clipboardicon.py >> @@ -128,17 +128,19 @@ class ClipboardIcon(RadioToolButton)**: >> # Clipboard object became complete. Make it the active one. >> if self._current_percent< 100 and cb_object.get_percent() == >> 100: >> self.props.active = True >> + self.show_notification() >> >> - self._notif_icon = NotificationIcon() >> - self._notif_icon.props.icon_**name = >> self._icon.props.icon_name >> - self._notif_icon.props.xo_**color = \ >> - XoColor('%s,%s' % (self._icon.props.stroke_**color, >> - self._icon.props.fill_color)) >> - frame = jarabe.frame.get_view() >> - frame.add_notification(self._**notif_icon, >> - gtk.CORNER_BOTTOM_LEFT) >> self._current_percent = cb_object.get_percent() >> >> + def show_notification(self): >> + self._notif_icon = NotificationIcon() >> + self._notif_icon.props.icon_**name = self._icon.props.icon_name >> + self._notif_icon.props.xo_**color = \ >> + XoColor('%s,%s' % (self._icon.props.stroke_**color, >> + self._icon.props.fill_color)) >> + frame = jarabe.frame.get_view() >> + frame.add_notification(self._**notif_icon, >> gtk.CORNER_BOTTOM_LEFT) >> + >> def _drag_begin_cb(self, widget, context): >> # TODO: We should get the pixbuf from the icon, with colors, etc. >> icon_theme = gtk.icon_theme_get_default() >> diff --git a/src/jarabe/frame/**clipboardpanelwindow.py >> b/src/jarabe/frame/**clipboardpanelwindow.py >> index b73572e..28c5726 100644 >> --- a/src/jarabe/frame/**clipboardpanelwindow.py >> +++ b/src/jarabe/frame/**clipboardpanelwindow.py >> @@ -70,7 +70,10 @@ class ClipboardPanelWindow(**FrameWindow): >> cb_selections.append(**selection) >> >> if len(cb_selections)> 0: >> - key = cb_service.add_object(name="") >> + key = cb_service.add_object(name="", >> + data_hash=hash(selection.data)**) >> + if key is None: >> + return >> cb_service.set_object_percent(**key, percent=0) >> for selection in cb_selections: >> self._add_selection(key, selection) >> diff --git a/src/jarabe/frame/**clipboardtray.py b/src/jarabe/frame/** >> clipboardtray.py >> index f49b799..f736295 100644 >> --- a/src/jarabe/frame/**clipboardtray.py >> +++ b/src/jarabe/frame/**clipboardtray.py >> @@ -70,6 +70,7 @@ class ClipboardTray(tray.VTray): >> cb_service = clipboard.get_instance() >> cb_service.connect('object-**added', self._object_added_cb) >> cb_service.connect('object-**deleted', self._object_deleted_cb) >> + cb_service.connect('object-**selected', >> self._object_selected_cb) >> >> def owns_clipboard(self): >> for icon in self._icons.values(): >> @@ -125,6 +126,12 @@ class ClipboardTray(tray.VTray): >> del self._icons[object_id] >> logging.debug('ClipboardTray: %r was deleted', object_id) >> >> + def _object_selected_cb(self, cb_service, object_id): >> + icon = self._icons[object_id] >> + icon.props.active = True >> + icon.show_notification() >> + logging.debug('ClipboardTray: %r was activated', object_id) >> + >> def drag_motion_cb(self, widget, context, x, y, time): >> logging.debug('ClipboardTray._**drag_motion_cb') >> >> > ______________________________**_________________ > Sugar-devel mailing list > [email protected].**org <[email protected]> > http://lists.sugarlabs.org/**listinfo/sugar-devel<http://lists.sugarlabs.org/listinfo/sugar-devel> >
_______________________________________________ Sugar-devel mailing list [email protected] http://lists.sugarlabs.org/listinfo/sugar-devel

