<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>44789</bug_id>
          
          <creation_ts>2023-01-02 13:03:50 +0300</creation_ts>
          <short_desc>mate-menu: TypeError в on_drag_data_get при перетаскивании избранного в главном меню MATE — DnD-переупорядочивание не работает</short_desc>
          <delta_ts>2026-10-15 18:01:07 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Branch p11</product>
          <component>mate-menu</component>
          <version>unspecified</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Shevtsov">shevtsov.anton</reporter>
          <assigned_to name="Andrey Cherepanov">cas</assigned_to>
          <cc>antohami</cc>
    
    <cc>cas</cc>
    
    <cc>snowmix</cc>
    
    <cc>varaksaaa</cc>
          
          <qa_contact name="qa-p11@altlinux.org">qa-p11</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219664</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Shevtsov">shevtsov.anton</who>
    <bug_when>2023-01-02 13:03:50 +0300</bug_when>
    <thetext>Появилась возможность перетаскивать ярлыки в Избранном в mate-menu, как это было в mint-menu много лет назад. Патч ниже. Проверил, работает. Прошу применить патч

https://www.riksoft.it/wikiriks/linux/advanced-mate-menu-favourites-cant-be-rearranged
https://github.com/ubuntu-mate/mate-menu/issues/81

--- /root/applications.py.orig	2023-01-02 14:50:55.071567632 +0500
+++ /usr/lib/python3/site-packages/mate_menu/plugins/applications.py	2023-01-02 14:54:12.748555410 +0500
@@ -192,8 +192,12 @@
     TARGET_TYPE_TEXT = 80
     toButton = ( Gtk.TargetEntry.new( &quot;text/uri-list&quot;, 0, TARGET_TYPE_TEXT ), Gtk.TargetEntry.new( &quot;text/uri-list&quot;, 0, TARGET_TYPE_TEXT ) )
     TARGET_TYPE_FAV = 81
-    toFav = ( Gtk.TargetEntry.new( &quot;FAVORITES&quot;, Gtk.TargetFlags.SAME_APP, 81 ), Gtk.TargetEntry.new( &quot;text/plain&quot;, 0, 100 ), Gtk.TargetEntry.new( &quot;text/uri-list&quot;, 0, 101 ) )
-    fromFav = ( Gtk.TargetEntry.new( &quot;FAVORITES&quot;, Gtk.TargetFlags.SAME_APP, 81 ), Gtk.TargetEntry.new( &quot;FAVORITES&quot;, Gtk.TargetFlags.SAME_APP, 81 ) )
+#    toFav = ( Gtk.TargetEntry.new( &quot;FAVORITES&quot;, Gtk.TargetFlags.SAME_APP, 81 ), Gtk.TargetEntry.new( &quot;text/plain&quot;, 0, 100 ), Gtk.TargetEntry.new( &quot;text/uri-list&quot;, 0, 101 ) )
+#    fromFav = ( Gtk.TargetEntry.new( &quot;FAVORITES&quot;, Gtk.TargetFlags.SAME_APP, 81 ), Gtk.TargetEntry.new( &quot;FAVORITES&quot;, Gtk.TargetFlags.SAME_APP, 81 ) )
+# ----- ADDED (Rik)
+    toFav = (Gtk.TargetEntry.new(&quot;text/plain&quot;, Gtk.TargetFlags.SAME_APP, 81), Gtk.TargetEntry.new(&quot;text/plain&quot;, 0, 100), Gtk.TargetEntry.new(&quot;text/uri-list&quot;, 0, 101))
+    fromFav = (Gtk.TargetEntry.new(&quot;text/plain&quot;, Gtk.TargetFlags.SAME_APP, 81),  Gtk.TargetEntry.new(&quot;text/plain&quot;, Gtk.TargetFlags.SAME_APP, 81))
+#-------------------
 
     def __init__(self, mateMenuWin, toggleButton):
         self.mateMenuWin = mateMenuWin
@@ -1369,11 +1373,13 @@
 
     def on_drag_data_received( self, widget, context, x, y, selection, info, time ):
         if info == self.TARGET_TYPE_FAV:
-            self.favoritesReorder( int(selection.get_data()), widget.position )
+#            self.favoritesReorder( int(selection.get_data()), widget.position )
+             self.favoritesReorder(int(selection.get_data().decode()), widget.position)
 
     def on_drag_data_get( self, widget, context, selection, targetType, time ):
         if targetType == self.TARGET_TYPE_FAV:
-            selection.set(Gdk.SELECTION_CLIPBOARD, 8, str(widget.position))
+           # selection.set(Gdk.SELECTION_CLIPBOARD, 8, str(widget.position))
+            selection.set_text(str(widget.position), -1)
 
     def on_icon_theme_changed(self, theme):
         self.menuChanged (0, 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298158</commentid>
    <comment_count>1</comment_count>
    <who name="Vera Blagoveschenskaya">vercha</who>
    <bug_when>2026-09-11 14:40:02 +0300</bug_when>
    <thetext>Результат проверки актуальности

Состояние:
Запрос функции (DnD порядка Избранного), не дефект. p10/Sisyphus/p11: один mate-menu 22.04.2-alt10. Патч репортёра не влит, ubuntu-mate#81 открыт.

Рекомендация:
оставить открытым, перенести в Sisyphus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302548</commentid>
    <comment_count>2</comment_count>
    <who name="Artem Varaksa">varaksaaa</who>
    <bug_when>2026-10-15 18:01:07 +0300</bug_when>
    <thetext>Это ошибка. В 26.10.1-alt1 уже исправлена, а вот в p10/p11 исправление ещё не дошло.

## Суть

В главном меню MATE (меню «Приложения») элементы раздела «Избранное» можно переупорядочивать перетаскиванием (drag-and-drop): кнопки избранного являются и источником, и целью DnD. Обработчик `on_drag_data_get()` передаёт в `Gtk.SelectionData.set()` аргумент `str(widget.position)`, однако в интроспекции GTK3 параметр `data` этого метода — байтовый массив (uint8, без завершающего нуля), и PyGObject принимает там только `bytes`: `str` трактуется как последовательность элементов, и каждый односимвольный элемент не проходит проверку числа (UINT8) — исключение:

    TypeError: Item 0: Must be number, not str

Код написан в стиле Python 2, где `str` и были байты. Исключение возникает в обработчике `drag-data-get`, поэтому данные перетаскивания не устанавливаются и сбрасывание на целевую кнопку просто не срабатывает: переупорядочивание избранного молча не работает, сам процесс панели продолжает жить (PyGObject печатает traceback в журнал).

## Где

`mate_menu/plugins/applications.py`, строки 1365–1371 (нумерация по 22.04.2; в установленном файле той же серии исключение было на строке 1376 — как в журнале ниже):

```python
    def on_drag_data_received( self, widget, context, x, y, selection, info, time ):
        if info == self.TARGET_TYPE_FAV:
            self.favoritesReorder( int(selection.get_data()), widget.position )

    def on_drag_data_get( self, widget, context, selection, targetType, time ):
        if targetType == self.TARGET_TYPE_FAV:
            selection.set(Gdk.SELECTION_CLIPBOARD, 8, str(widget.position))
```

Исключение поднимает `on_drag_data_get()`. Приёмник `on_drag_data_received()` в Python 3 случайно работает (`int()` принимает `bytes`), но апстрим дополнительно укрепил его явным `.decode()` и `try/except`. ALT-патчей в этом коде нет — код базового 22.04.2.

## Воспроизведение

1. Среда MATE, в главном меню (меню «Приложения») раздел «Избранное» содержит не менее двух программ.
2. Перетащить иконку одной избранной программы на иконку другой.

Результат: переупорядочивание не происходит; в журнале от процесса `org.mate.panel.applet.MateMenuAppletFactory`:

```
окт 15 13:28:07 org.mate.panel.applet.MateMenuAppletFactory[4023]: Traceback (most recent call last):
окт 15 13:28:07 org.mate.panel.applet.MateMenuAppletFactory[4023]:   File &quot;/usr/lib/python3/site-packages/mate_menu/plugins/applications.py&quot;, line 1376, in on_drag_data_get
окт 15 13:28:07 org.mate.panel.applet.MateMenuAppletFactory[4023]:     selection.set(Gdk.SELECTION_CLIPBOARD, 8, str(widget.position))
окт 15 13:28:07 org.mate.panel.applet.MateMenuAppletFactory[4023]: TypeError: Item 0: Must be number, not str
```

## Апстрим

Исправлено коммитом `b73f7e288a70f056081197df9852c285fbd93cb` (2026-09-11, «applications: Fix drag-and-drop reordering of favourites», закрывает https://github.com/ubuntu-mate/mate-menu/issues/81): в `on_drag_data_get()` — `str(widget.position).encode()`, в `on_drag_data_received()` — `int(selection.get_data().decode())` с `try/except (UnicodeDecodeError, ValueError)`. Коммит включён в апстримный 26.10.1.

## Затронутость

- p10 22.04.2-alt10: **затронут**
- p11 22.04.2-alt10: **затронут** (та же версия исходников, та же ревизия gear)
- Sisyphus 26.10.1-alt1: не затронут (фикс `b73f7e2` уже включён, релиз 2026-10-02)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>