Kivy: SDL_dropfileは昇格された権限では機能しません

作成日 2017年02月18日  ·  5コメント  ·  ソース: kivy/kivy

バージョン

  • OS:Windows
  • SDL:2.0.5

説明

これはほとんどSDL2のみの問題ですが、少なくともドキュメントで言及する必要があります。 バグトラッカーで関連する問題を見つけることができないので、誰かがすでにそこに登録されている場合は、それらを突くか、マスター/トランクブランチで修正されていないかどうかを確認すると便利です。

コードとログ

from kivy.app import runTouchApp
from kivy.core.window import Window

def _drop(window, file_path):
    print(file_path)

Window.bind(on_dropfile=_drop)
runTouchApp()

SDL2の

#include <SDL2/SDL.h>

int main() {
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Window *window = SDL_CreateWindow(
        "Drag-and-Drop",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED,
        800, 600, SDL_WINDOW_SHOWN
    );

    int running = 1;
    while (running) {
        SDL_Event event;
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
            case SDL_DROPFILE:
                printf("Dropped file: %s\n", event.drop.file);
                break;
            case SDL_QUIT:
                running = 0;
                break;
            }
        }
    }

    SDL_DestroyWindow(window);
    SDL_Quit();
}
upstream

最も参考になるコメント

おそらく、問題を文書化してから閉じる必要があります。

全てのコメント5件

しかし、昇格されたアクセス許可ウィンドウからもファイルを削除しましたか? それが問題があることを確認するために; Windowsエクスプローラー/ファイルブラウザーも昇格されたアクセス許可で開きます。 私が想像するように、Linuxは同じ動作を示します。 私は、実際には、そのようなコンテキスト交換を一般的に防止しようとするのはOSのものだと思います。 唯一の例外を除いて、私はコピーアンドペーストバッファであると信じています。

これはWindowsだけだと思いますが、Ubuntuなどではテストしていないので、例のsudo python multiple_dropfile.py 、または上記のコードブロックの1つを試してみてください。

昇格されたアクセス許可については、管理者として起動されたcmd /c explorerで昇格されたアクセス許可を取得するのに十分であると思いますが、それでも問題はなく、イベントから何も返されません。

本当に; これはおそらく修正するKivyのドメインにはありません。 実際、おそらくSDLの範囲外です。 これは、WindowsでMICレベルごとにメッセージパッシングフィルターを変更する方法を公開する予定がない限りです。 しかし、Linuxでも同様の問題が発生すると思います。 彼らもsudoプロセスのより深い分離を始めたので; 同じユーザーとして実行されている場合でも、sudoプロセスと非sudoプロセスには間違いなく違いがあります。 したがって、Linuxの修正も発見する必要があり、おそらく公開する必要があります。 しかし、そのような詳細は、問題のドメインに必要に応じて実装するためにプログラマーに任せるべきだと思います。 それは私の2セントです。

おそらく、問題を文書化してから閉じる必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価