Hello community,

here is the log from the commit of package spectacle for openSUSE:Factory 
checked in at 2017-01-25 23:15:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/spectacle (Old)
 and      /work/SRC/openSUSE:Factory/.spectacle.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "spectacle"

Changes:
--------
--- /work/SRC/openSUSE:Factory/spectacle/spectacle.changes      2016-12-17 
10:58:13.395073870 +0100
+++ /work/SRC/openSUSE:Factory/.spectacle.new/spectacle.changes 2017-01-25 
23:15:24.950431361 +0100
@@ -1,0 +2,13 @@
+Sat Jan 21 11:24:27 UTC 2017 - [email protected]
+
+- Add patch to support Plasma 5.9 feature of images in notifications:
+  * set-screenshot-URL-for-notification.patch
+
+-------------------------------------------------------------------
+Sat Jan 14 09:08:57 UTC 2017 - [email protected]
+
+- - Update to KDE Applications 16.12.1
+   * KDE Applications 16.12.1 
+   * https://www.kde.org/announcements/announce-applications-16.12.1.php
+
+-------------------------------------------------------------------

Old:
----
  spectacle-16.12.0.tar.xz

New:
----
  set-screenshot-URL-for-notification.patch
  spectacle-16.12.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ spectacle.spec ++++++
--- /var/tmp/diff_new_pack.wwVMbm/_old  2017-01-25 23:15:25.434358394 +0100
+++ /var/tmp/diff_new_pack.wwVMbm/_new  2017-01-25 23:15:25.446356585 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package spectacle
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,16 +17,18 @@
 
 
 Name:           spectacle
-Version:        16.12.0
+Version:        16.12.1
 Release:        0
-%define kf5_version 5.26.0
-# Latest stable Applications (e.g. 16.08 in KA, but 16.12.0 in KUA)
+%define kf5_version 5.29.0
+# Latest stable Applications (e.g. 16.08 in KA, but 16.12.1 in KUA)
 %{!?_kapp_version: %global _kapp_version %(echo %{version}| awk -F. '{print 
$1"."$2}')}
 Summary:        Screen Capture Program
 License:        LGPL-2.0+ and GPL-2.0+
 Group:          Productivity/Graphics/Other
 Url:            http://www.kde.org
 Source0:        %{name}-%{version}.tar.xz
+# PATCH-FIX-UPSTREAM set-screenshot-URL-for-notification.patch 
[email protected] -- Set screenshot URL for notification
+Patch1:         set-screenshot-URL-for-notification.patch
 BuildRequires:  extra-cmake-modules
 BuildRequires:  kconfig-devel
 BuildRequires:  kcoreaddons-devel
@@ -36,7 +38,7 @@
 BuildRequires:  kf5-filesystem
 BuildRequires:  ki18n-devel
 BuildRequires:  kio-devel
-BuildRequires:  knotifications-devel
+BuildRequires:  knotifications-devel >= %{kf5_version}
 BuildRequires:  kwidgetsaddons-devel
 BuildRequires:  kwindowsystem-devel
 BuildRequires:  kxmlgui-devel
@@ -79,6 +81,7 @@
 
 %prep
 %setup -q
+%patch1 -p1
 
 %build
   %cmake_kf5 -d build

++++++ set-screenshot-URL-for-notification.patch ++++++
>From 945548e8c63f02c39aef492d31d8942ee6063bd6 Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <[email protected]>
Date: Tue, 13 Dec 2016 10:42:54 +0100
Subject: [PATCH] Set screenshot URL for notification

This will have Plasma show a beautiful interactive (can be dragged to
e.g. a browser window) preview for the thumbnail.

REVIEW: 129593
---
 CMakeLists.txt        | 2 +-
 src/SpectacleCore.cpp | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2b75638..dfbbe37 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,7 +14,7 @@ set(SPECTACLE_VERSION ${KDE_APPLICATIONS_VERSION})
 cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)
 
 set(QT_MIN_VERSION     "5.4.0")
-set(KF5_MIN_VERSION    "5.25.0")
+set(KF5_MIN_VERSION    "5.29.0")
 set(PLASMA_MIN_VERSION "5.4.0")
 
 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
diff --git a/src/SpectacleCore.cpp b/src/SpectacleCore.cpp
index 82c84a2..96044c6 100644
--- a/src/SpectacleCore.cpp
+++ b/src/SpectacleCore.cpp
@@ -252,6 +252,7 @@ void SpectacleCore::doNotify(const QUrl &savedAt)
     }
 
     notify->setActions({i18nc("Open the screenshot we just saved", "Open")});
+    notify->setUrls({savedAt});
 
     connect(notify, &KNotification::action1Activated, this, [this, savedAt] {
         new KRun(savedAt, nullptr);
++++++ spectacle-16.12.0.tar.xz -> spectacle-16.12.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spectacle-16.12.0/CMakeLists.txt 
new/spectacle-16.12.1/CMakeLists.txt
--- old/spectacle-16.12.0/CMakeLists.txt        2016-12-06 20:57:05.000000000 
+0100
+++ new/spectacle-16.12.1/CMakeLists.txt        2017-01-09 06:50:34.000000000 
+0100
@@ -5,7 +5,7 @@
 # KDE Application Version, managed by release script
 set(KDE_APPLICATIONS_VERSION_MAJOR "16")
 set(KDE_APPLICATIONS_VERSION_MINOR "12")
-set(KDE_APPLICATIONS_VERSION_MICRO "0")
+set(KDE_APPLICATIONS_VERSION_MICRO "1")
 set(KDE_APPLICATIONS_VERSION 
"${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}")
 set(SPECTACLE_VERSION ${KDE_APPLICATIONS_VERSION})
 
@@ -14,7 +14,7 @@
 cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)
 
 set(QT_MIN_VERSION     "5.4.0")
-set(KF5_MIN_VERSION    "5.18.0")
+set(KF5_MIN_VERSION    "5.25.0")
 set(PLASMA_MIN_VERSION "5.4.0")
 
 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
@@ -38,6 +38,7 @@
 find_package(
     Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED
         Core
+        Concurrent
         Widgets
         DBus
         PrintSupport
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/spectacle-16.12.0/desktop/org.kde.spectacle.appdata.xml 
new/spectacle-16.12.1/desktop/org.kde.spectacle.appdata.xml
--- old/spectacle-16.12.0/desktop/org.kde.spectacle.appdata.xml 2016-12-06 
20:57:05.000000000 +0100
+++ new/spectacle-16.12.1/desktop/org.kde.spectacle.appdata.xml 2017-01-09 
06:50:34.000000000 +0100
@@ -14,6 +14,7 @@
   <name xml:lang="fi">Spectacle</name>
   <name xml:lang="id">Spectacle</name>
   <name xml:lang="it">Spectacle</name>
+  <name xml:lang="ko">Spectacle</name>
   <name xml:lang="nl">Spectacle</name>
   <name xml:lang="nn">Spectacle</name>
   <name xml:lang="pl">Spectacle</name>
@@ -38,6 +39,7 @@
     <p xml:lang="fi">Spectacle on yksinkertainen sovellus ruutukaappauskuvien 
ottamiseksi. Se voi kaapata kuvan koko työpöydältä, yksittäiseltä näytöltä, 
aktiivisesta ikkunasta, hiiren alla olevasta ikkunasta tai suorakulmaisesta 
näytön alueesta. Kuvat voi myöhemmin tulostaa, lähettää muihin sovelluksiin 
käsiteltäväksi tai tallentaa sellaisinaan.</p>
     <p xml:lang="id">Spectacle adalah aplikasi sederhana untuk menangkap 
cuplikan layar desktop. Hal ini bisa menangkap citra-citra dari seluruh 
desktop, monitor tunggal, jendela yang sedang aktif, jendela saat ini yang 
sedang di bawah  mouse, atau wilayah berbentuk persegi pada layar. Citra-citra 
kemudian bisa dicetak, dikirim ke aplikasi lain untuk manipulasi, atau secara 
cepat disimpan sebagai apa.</p>
     <p xml:lang="it">Spectacle è una semplice applicazione per catturare 
schermate. Può acquisire immagini dell'intero desktop, di un singolo monitor, 
della finestra attiva, della finestra sotto il puntatore del mouse, o di una 
regione rettangolare dello schermo. Le immagini possono essere stampate, 
inviate ad altre applicazioni per essere modificate, o salvate rapidamente così 
come sono.</p>
+    <p xml:lang="ko">Spectacle은 데스크톱 스크린샷을 찍는 프로그램입니다. 전체 데스크톱, 단일 모니터, 활성 창, 
마우스 아래 창, 화면의 사각형 영역을 찍을 수 있습니다. 사진을 인쇄하거나, 그대로 저장하거나, 다른 프로그램에서 곧바로 편집할 수 
있습니다.</p>
     <p xml:lang="nl">Spectacle is een eenvoudige toepassing voor het opnemen 
van schermafbeeldingen van het bureaublad. Het kan afbeeldingen van het gehele 
bureaublad, een enkele monitor, het nu actieve venster, het venster nu onder de 
muis of een rechthoekig gebied van het scherm. De afbeelding kan dan afgedrukt 
worden, naar een andere toepassing voor bewerking worden verzonden of snel 
worden opgeslagen zoals deze nu is.</p>
     <p xml:lang="nn">Spectacle er eit enkel program for å ta skjermbilete. Det 
kan ta bilete av heile skrivebordet, ein einskild skjerm, det gjeldande 
vindauget, vindauget under musepeikaren eller eit utsnitt av skjermflata. 
Bileta kan skrivast ut, sendast til andre program for vidare arbeid eller 
lagrast direkte.</p>
     <p xml:lang="pl">Spectacle to prosta aplikacja do wykonywania zrzutów 
ekranu. Za jej pomocą można przechwycić cały pulpit, pojedynczy monitor, 
obecnie aktywne okno, okno obecnie pod wskaźnikiem myszy lub prostokątny obszar 
ekrany. Zrzuty można wydrukować, wysłać do innej aplikacji do obróbki lub 
szybko zapisać tak jak go wykonano.</p>
@@ -47,6 +49,7 @@
     <p xml:lang="sv">Spectacle är ett enkelt program för att ta skärmbilder av 
skrivbordet. Det kan ta bilder av hela skrivbordet, en enda bildskärm, fönstret 
som för närvarande är aktivt, fönstret som för närvarande är under musen, eller 
ett rektangulärt skärmområde. Bilderna kan därefter skrivas ut, skickas till 
andra program för behandling, eller snabbt sparas som de är.</p>
     <p xml:lang="uk">Spectacle — проста програма для створення знімків екрана. 
Передбачено можливість захоплення знімків усієї стільниці, окремого монітора, 
поточного активного вікна, вікна під вказівником миші або прямокутної ділянки 
на екрані. Створені зображення можна надрукувати, надіслати до іншої програми 
для обробки або зберегти без змін.</p>
     <p xml:lang="x-test">xxSpectacle is a simple application for capturing 
desktop screenshots. It can capture images of the entire desktop, a single 
monitor, the currently active window, the window currently under the mouse, or 
a rectangular region of the screen. The images can then be printed, sent to 
other applications for manipulation, or quickly be saved as-is.xx</p>
+    <p xml:lang="zh-CN">Spectacle 
是一个用于抓取桌面截图的简单应用程序。它可以抓取整个桌面、单个显示器、当前活动窗口、鼠标所在的窗口或是屏幕上的一块方形区域的图像。这些图像稍后便可以用于打印、向其它应用程序发送以进行进一步操作或是直接保存下来。</p>
     <p xml:lang="zh-TW">Spectale 
是一個用來擷取桌面快照的簡易應用程式。它可以擷取整個桌面、單一個顯示器、目前作用中的視窗、目前滑鼠底下的的視窗或是螢幕上的矩形區域等。其所擷取的圖片可以被列印、傳送到其他應用程式以供進一步操作或是快速儲存而不進行修改。</p>
     <p>Features:</p>
     <p xml:lang="ca">Característiques:</p>
@@ -60,6 +63,7 @@
     <p xml:lang="he">תכונות</p>
     <p xml:lang="id">Fitur:</p>
     <p xml:lang="it">Funzionalità:</p>
+    <p xml:lang="ko">기능:</p>
     <p xml:lang="nl">Mogelijkheden:</p>
     <p xml:lang="nn">Funksjonar:</p>
     <p xml:lang="pl">Możliwości:</p>
@@ -85,6 +89,7 @@
       <li xml:lang="he">צילום כל שולחן עבודה</li>
       <li xml:lang="id">Tangkap Entri Desktop</li>
       <li xml:lang="it">Cattura l'intero desktop</li>
+      <li xml:lang="ko">전체 데스크톱 찍기</li>
       <li xml:lang="nl">Opname van het gehele bureaublad</li>
       <li xml:lang="nn">Ta bilete av heile skrivebordet</li>
       <li xml:lang="pl">Przechwytywanie całego pulpitu</li>
@@ -108,6 +113,7 @@
       <li xml:lang="he">צילום המסך הנוכחי</li>
       <li xml:lang="id">Tangkap Monitor Saat Ini</li>
       <li xml:lang="it">Cattura il monitor attuale</li>
+      <li xml:lang="ko">현재 모니터 찍기</li>
       <li xml:lang="nl">Opname van de huidige monitor</li>
       <li xml:lang="nn">Ta bilete av gjeldande skjerm</li>
       <li xml:lang="pl">Przechwytywanie bieżącego monitora</li>
@@ -131,6 +137,7 @@
       <li xml:lang="he">צילום החלון הפעיל</li>
       <li xml:lang="id">Tangkap Jendela Aktif</li>
       <li xml:lang="it">Cattura la finestra attiva</li>
+      <li xml:lang="ko">활성 창 찍기</li>
       <li xml:lang="nl">Opname van het actieve venster</li>
       <li xml:lang="nn">Ta bilete av aktivt vindauge</li>
       <li xml:lang="pl">Przechwytywanie aktywnego okna</li>
@@ -154,6 +161,7 @@
       <li xml:lang="he">צילון מלבן</li>
       <li xml:lang="id">Tangkap Wilayah Berbentuk Persegi</li>
       <li xml:lang="it">Cattura una regione rettangolare</li>
+      <li xml:lang="ko">화면의 사각형 영역 찍기</li>
       <li xml:lang="nl">Opname van een rechthoekig gebied</li>
       <li xml:lang="nn">Ta bilete av skjermutsnitt</li>
       <li xml:lang="pl">Przechwytywanie obszaru prostokątnego</li>
@@ -176,6 +184,7 @@
       <li xml:lang="he">קיצור דרך לצילום מסך</li>
       <li xml:lang="id">Pintasan keyboard untuk mengambil cuplikan-layar</li>
       <li xml:lang="it">Scorciatoie di tastiera per acquisire schermate</li>
+      <li xml:lang="ko">화면 스크린샷 찍기 단축키</li>
       <li xml:lang="nl">Sneltoetsen voor het maken van schermafdrukken</li>
       <li xml:lang="nn">Snøggtastar for å ta bilete av skjermen</li>
       <li xml:lang="pl">Skróty klawiszowe do wykonywania zrzutów ekranu</li>
@@ -185,6 +194,7 @@
       <li xml:lang="sv">Snabbtangenter för att ta skärmbilder</li>
       <li xml:lang="uk">Створення знімків за допомогою натискання комбінацій 
клавіш</li>
       <li xml:lang="x-test">xxKeyboard shortcuts for taking screenshotsxx</li>
+      <li xml:lang="zh-CN">用于截图的键盘快捷键</li>
       <li xml:lang="zh-TW">螢幕快照的鍵盤快捷鍵</li>
     </ul>
   </description>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spectacle-16.12.0/desktop/org.kde.spectacle.desktop 
new/spectacle-16.12.1/desktop/org.kde.spectacle.desktop
--- old/spectacle-16.12.0/desktop/org.kde.spectacle.desktop     2016-12-06 
20:57:05.000000000 +0100
+++ new/spectacle-16.12.1/desktop/org.kde.spectacle.desktop     2017-01-09 
06:50:34.000000000 +0100
@@ -19,7 +19,7 @@
 GenericName[it]=Accessorio per catturare schermate
 GenericName[ko]=화면 캡처 유틸리티
 GenericName[lt]=KDE ekranvaizdžių paveikslavimas
-GenericName[nl]=Hulpmiddel voor het vangen van een schermafdruk
+GenericName[nl]=Hulpmiddel voor het maken van een schermafdruk
 GenericName[nn]=Verktøy for å lagra skjermbilete
 GenericName[pl]=Narzędzie do przechwytywania ekranu
 GenericName[pt]=Utilitário de Captura de Imagens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spectacle-16.12.0/desktop/spectacle.khotkeys 
new/spectacle-16.12.1/desktop/spectacle.khotkeys
--- old/spectacle-16.12.0/desktop/spectacle.khotkeys    2016-12-06 
20:57:05.000000000 +0100
+++ new/spectacle-16.12.1/desktop/spectacle.khotkeys    2017-01-09 
06:50:34.000000000 +0100
@@ -21,6 +21,7 @@
 Comment[he]=קיצור דרך לצילום מסך
 Comment[id]=Pintasan keyboard untuk mengambil cuplikan-layar
 Comment[it]=Scorciatoia per acquisire schermate
+Comment[ko]=화면 스크린샷 찍기 단축키
 Comment[nl]=Sneltoetsen voor het maken van schermafdrukken
 Comment[nn]=Snarvegar for å ta bilete av skjermen
 Comment[pl]=Skróty do zrzucania ekranu
@@ -51,6 +52,7 @@
 Name[he]=צילומי מסך
 Name[id]=Screenshots
 Name[it]=Schermate
+Name[ko]=스크린샷
 Name[nl]=Schermafdrukken
 Name[nn]=Skjermbilete
 Name[pl]=Zrzuty ekranu
@@ -86,6 +88,7 @@
 Comment[he]=הפעל את כלי צילום המסך והראה את הממשק הגרפי
 Comment[id]=Mulai alat cuplikan-layar dan tunjukkan GUI
 Comment[it]=Avvia lo strumento per le schermate e ne mostra l'interfaccia
+Comment[ko]=스크린샷 도구를 시작하고 GUI 보이기
 Comment[nl]=Start het hulpmiddel voor schermafdrukken en toon de GUI
 Comment[nn]=Start skjermbiletverktøyet og vis grafisk grensesnitt
 Comment[pl]=Wywołaj narzędzie zrzutów ekranu i pokaż graficzny interfejs
@@ -115,6 +118,7 @@
 Name[he]=הפעל את כלי צילום המסך
 Name[id]=Start Screenshot Tool
 Name[it]=Avvia lo strumento per le schermate
+Name[ko]=스크린샷 도구 시작하기
 Name[nl]=Het hulpmiddel voor schermafdrukken starten
 Name[nn]=Skjermbiletverktøyet
 Name[pl]=Wywołaj narzędzie zrzutów ekranu
@@ -159,6 +163,7 @@
 Comment[gl]=Acción_sinxela
 Comment[id]=Tindakan_sederhana
 Comment[it]=Azione_semplice
+Comment[ko]=Simple_action
 Comment[nl]=Eenvoudige_handeling
 Comment[nn]=Enkel_handling
 Comment[pl]=Proste_działanie
@@ -192,6 +197,7 @@
 Comment[gl]=Capturar todas as pantallas e gardar a captura.
 Comment[id]=Ambil sebuah cuplikan-layar layar penuh (semua monitor) dan 
menyimpannya
 Comment[it]=Cattura una schermata a tutto schermo (tutti i monitor) e la salva
+Comment[ko]=모든 모니터의 스크린샷을 찍고 저장하기
 Comment[nl]=Een volledige schermafdruk maken (alle monitoren) en deze opslaan
 Comment[nn]=Ta eit fullskjermbilete (alle skjermar) og lagra det
 Comment[pl]=Wykonaj zrzut całego ekranu (wszystkie monitory) i zapisz go
@@ -219,6 +225,7 @@
 Name[gl]=Capturar todas as pantallas
 Name[id]=Take Full Screen Screenshot
 Name[it]=Cattura l'intero schermo
+Name[ko]=전체 화면 스크린샷 찍기
 Name[nl]=Schermafdruk van Volledig scherm maken
 Name[nn]=Ta fullskjermsbilete
 Name[pl]=Wykonaj zrzut całego ekranu
@@ -263,6 +270,7 @@
 Comment[gl]=Acción_sinxela
 Comment[id]=Tindakan_sederhana
 Comment[it]=Azione_semplice
+Comment[ko]=Simple_action
 Comment[nl]=Eenvoudige_handeling
 Comment[nn]=Enkel_handling
 Comment[pl]=Proste_działanie
@@ -296,6 +304,7 @@
 Comment[gl]=Capturar a xanela activa e gardar a captura.
 Comment[id]=Ambil sebuah cuplikan-layar pada jendela yang aktif saat ini dan 
menyimpannya
 Comment[it]=Cattura una schermata della finestra attiva e la salva
+Comment[ko]=현재 활성 창 스크린샷을 찍고 저장하기
 Comment[nl]=Een schermafdruk van het huidige actieve venster maken en het 
opslaan
 Comment[nn]=Ta skjermbilete frå det aktive vindauget og lagra det
 Comment[pl]=Wykonaj zrzut obecnie aktywnego okna i zapisz go
@@ -323,6 +332,7 @@
 Name[gl]=Capturar a xanela activa
 Name[id]=Take Active Window Screenshot
 Name[it]=Cattura la finestra attiva
+Name[ko]=활성 창 스크린샷 찍기
 Name[nl]=Schermafdruk van actieve venster maken
 Name[nn]=Ta skjermbilete av aktivt vindauge
 Name[pl]=Wykonaj zrzut obecnie aktywnego okna
@@ -367,6 +377,7 @@
 Comment[gl]=Acción_sinxela
 Comment[id]=Tindakan_sederhana
 Comment[it]=Azione_semplice
+Comment[ko]=Simple_action
 Comment[nl]=Eenvoudige_handeling
 Comment[nn]=Enkel_handling
 Comment[pl]=Proste_działanie
@@ -400,6 +411,7 @@
 Comment[gl]=Capturar unha rexión rectangular indicada e gardar a captura.
 Comment[id]=Ambil sebuah cuplikan-layar pada wilayah berbentuk persegi yang 
kamu tetapkan dan menyimpannya
 Comment[it]=Cattura una schermata di una regione rettangolare a piacere e la 
salva
+Comment[ko]=지정한 사각형 영역의 스크린샷을 찍고 저장하기
 Comment[nl]=Een schermafdruk van een rechthoekig gebied dat u specificeert 
maken en het opslaan
 Comment[nn]=Ta rektangulært skjermutsnitt og lagra det
 Comment[pl]=Wykonaj zrzut podanego przez ciebie prostokątnego obszaru i zapisz 
go
@@ -427,6 +439,7 @@
 Name[gl]=Capturar unha rexión rectangular
 Name[id]=Take Rectangular Region Screenshot
 Name[it]=Cattura una regione rettangolare
+Name[ko]=사각형 영역 스크린샷 찍기
 Name[nl]=Schermafdruk van rechthoekig gebied maken
 Name[nn]=Ta rektangulært skjermutsnitt
 Name[pl]=Wykonaj zrzut prostokątnego obszaru
@@ -471,6 +484,7 @@
 Comment[gl]=Acción_sinxela
 Comment[id]=Tindakan_sederhana
 Comment[it]=Azione_semplice
+Comment[ko]=Simple_action
 Comment[nl]=Eenvoudige_handeling
 Comment[nn]=Enkel_handling
 Comment[pl]=Proste_działanie
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spectacle-16.12.0/src/CMakeLists.txt 
new/spectacle-16.12.1/src/CMakeLists.txt
--- old/spectacle-16.12.0/src/CMakeLists.txt    2016-12-06 20:57:05.000000000 
+0100
+++ new/spectacle-16.12.1/src/CMakeLists.txt    2017-01-09 06:50:34.000000000 
+0100
@@ -14,6 +14,7 @@
         SpectacleDBusAdapter.cpp
         PlatformBackends/ImageGrabber.cpp
         PlatformBackends/DummyImageGrabber.cpp
+        PlatformBackends/KWinWaylandImageGrabber.cpp
         Gui/KSMainWindow.cpp
         Gui/KSWidget.cpp
         Gui/KSImageWidget.cpp
@@ -60,6 +61,7 @@
 
 target_link_libraries(
     spectacle
+        Qt5::Concurrent
         Qt5::DBus
         Qt5::PrintSupport
         Qt5::Quick
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spectacle-16.12.0/src/Config.h.in 
new/spectacle-16.12.1/src/Config.h.in
--- old/spectacle-16.12.0/src/Config.h.in       2016-12-06 20:57:05.000000000 
+0100
+++ new/spectacle-16.12.1/src/Config.h.in       2017-01-09 06:50:34.000000000 
+0100
@@ -14,6 +14,6 @@
 #cmakedefine SPECTACLE_VERSION "@SPECTACLE_VERSION@"
 
 /* set the release codename */
-#define SPECTACLE_CODENAME "Everything Is Going To Be Alright"
+#define SPECTACLE_CODENAME "Orderly Transfer of Power"
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spectacle-16.12.0/src/Gui/KSMainWindow.cpp 
new/spectacle-16.12.1/src/Gui/KSMainWindow.cpp
--- old/spectacle-16.12.0/src/Gui/KSMainWindow.cpp      2016-12-06 
20:57:05.000000000 +0100
+++ new/spectacle-16.12.1/src/Gui/KSMainWindow.cpp      2017-01-09 
06:50:34.000000000 +0100
@@ -39,6 +39,7 @@
 #include <KStandardGuiItem>
 #include <KHelpMenu>
 #include <KAboutData>
+#include <KWindowSystem>
 
 #include "SettingsDialog/SettingsDialog.h"
 #include "ExportMenu.h"
@@ -67,7 +68,7 @@
     // credits for this goes to Thomas Lübking <[email protected]>
 
 #ifdef XCB_FOUND
-    if (qApp->platformName() == QStringLiteral("xcb")) {
+    if (KWindowSystem::isPlatformX11()) {
         // create a window if we haven't already. note that the QWidget 
constructor
         // should already have done this
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/spectacle-16.12.0/src/PlatformBackends/KWinWaylandImageGrabber.cpp 
new/spectacle-16.12.1/src/PlatformBackends/KWinWaylandImageGrabber.cpp
--- old/spectacle-16.12.0/src/PlatformBackends/KWinWaylandImageGrabber.cpp      
1970-01-01 01:00:00.000000000 +0100
+++ new/spectacle-16.12.1/src/PlatformBackends/KWinWaylandImageGrabber.cpp      
2017-01-09 06:50:34.000000000 +0100
@@ -0,0 +1,169 @@
+/*
+ *  Copyright (C) 2016 Martin Graesslin <[email protected]>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301, USA.
+ */
+#include "KWinWaylandImageGrabber.h"
+
+#include <QDBusInterface>
+#include <QDBusPendingCall>
+#include <QDBusPendingReply>
+#include <QDBusUnixFileDescriptor>
+
+#include <QtConcurrentRun>
+#include <QFutureWatcher>
+#include <qplatformdefs.h>
+
+#include <errno.h>
+
+static int readData(int fd, QByteArray &data)
+{
+    // implementation based on QtWayland file qwaylanddataoffer.cpp
+    char buf[4096];
+    int retryCount = 0;
+    int n;
+    while (true) {
+        n = QT_READ(fd, buf, sizeof buf);
+        // give user 30 sec to click a window, afterwards considered as error
+        if (n == -1 && (errno == EAGAIN) && ++retryCount < 30000) {
+            usleep(1000);
+        } else {
+            break;
+        }
+    }
+    if (n > 0) {
+        data.append(buf, n);
+        n = readData(fd, data);
+    }
+    return n;
+}
+
+static QImage readImage(int pipeFd)
+{
+    QByteArray content;
+    if (readData(pipeFd, content) != 0) {
+        close(pipeFd);
+        return QImage();
+    }
+    close(pipeFd);
+    QDataStream ds(content);
+    QImage image;
+    ds >> image;
+    return image;
+};
+
+KWinWaylandImageGrabber::KWinWaylandImageGrabber(QObject *parent) :
+    ImageGrabber(parent)
+{
+}
+
+KWinWaylandImageGrabber::~KWinWaylandImageGrabber() = default;
+
+bool KWinWaylandImageGrabber::onClickGrabSupported() const
+{
+    return true;
+}
+
+void KWinWaylandImageGrabber::grabFullScreen()
+{
+    grab(Mode::FullScreen, mCapturePointer);
+}
+
+void KWinWaylandImageGrabber::grabCurrentScreen()
+{
+    grab(Mode::CurrentScreen, mCapturePointer);
+}
+
+void KWinWaylandImageGrabber::grabActiveWindow()
+{
+    // unsupported
+    emit pixmapChanged(QPixmap());
+}
+
+void KWinWaylandImageGrabber::grabRectangularRegion()
+{
+    // unsupported
+    emit pixmapChanged(QPixmap());
+}
+
+void KWinWaylandImageGrabber::grabWindowUnderCursor()
+{
+    int mask = 0;
+    if (mCaptureDecorations) {
+        mask = 1;
+    }
+    if (mCapturePointer) {
+        mask |= 1 << 1;
+    }
+    grab(Mode::Window, mask);
+}
+
+void KWinWaylandImageGrabber::grabTransientWithParent()
+{
+    // unsupported, perform grab window under cursor
+    grabWindowUnderCursor();
+}
+
+QPixmap KWinWaylandImageGrabber::blendCursorImage(const QPixmap &pixmap, int 
x, int y, int width, int height)
+{
+    Q_UNUSED(x)
+    Q_UNUSED(y)
+    Q_UNUSED(width)
+    Q_UNUSED(height)
+    return pixmap;
+}
+
+void KWinWaylandImageGrabber::startReadImage(int readPipe)
+{
+    QFutureWatcher<QImage> *watcher = new QFutureWatcher<QImage>(this);
+    QObject::connect(watcher, &QFutureWatcher<QImage>::finished, this,
+        [watcher, this] {
+            watcher->deleteLater();
+            const QImage img = watcher->result();
+            emit pixmapChanged(QPixmap::fromImage(img));
+        }
+    );
+    watcher->setFuture(QtConcurrent::run(readImage, readPipe));
+}
+
+template <typename T>
+void KWinWaylandImageGrabber::callDBus(Mode mode, int writeFd, T argument)
+{
+    QDBusInterface interface(QStringLiteral("org.kde.KWin"), 
QStringLiteral("/Screenshot"), QStringLiteral("org.kde.kwin.Screenshot"));
+    static const QMap<Mode, QString> s_hash = {
+        {Mode::Window, QStringLiteral("interactive")},
+        {Mode::CurrentScreen, QStringLiteral("screenshotScreen")},
+        {Mode::FullScreen, QStringLiteral("screenshotFullscreen")}
+    };
+    auto it = s_hash.find(mode);
+    Q_ASSERT(it != s_hash.end());
+    interface.asyncCall(it.value(), 
QVariant::fromValue(QDBusUnixFileDescriptor(writeFd)),  argument);
+}
+
+template <typename T>
+void KWinWaylandImageGrabber::grab(Mode mode, T argument)
+{
+    int pipeFds[2];
+    if (pipe2(pipeFds, O_CLOEXEC|O_NONBLOCK) != 0) {
+        emit imageGrabFailed();
+        return;
+    }
+
+    callDBus(mode, pipeFds[1], argument);
+    startReadImage(pipeFds[0]);
+
+    close(pipeFds[1]);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/spectacle-16.12.0/src/PlatformBackends/KWinWaylandImageGrabber.h 
new/spectacle-16.12.1/src/PlatformBackends/KWinWaylandImageGrabber.h
--- old/spectacle-16.12.0/src/PlatformBackends/KWinWaylandImageGrabber.h        
1970-01-01 01:00:00.000000000 +0100
+++ new/spectacle-16.12.1/src/PlatformBackends/KWinWaylandImageGrabber.h        
2017-01-09 06:50:34.000000000 +0100
@@ -0,0 +1,59 @@
+/*
+ *  Copyright (C) 2016 Martin Graesslin <[email protected]>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301, USA.
+ */
+#ifndef KWINWAYLANDIMAGEGRABBER_H
+#define KWINWAYLANDIMAGEGRABBER_H
+
+#include "ImageGrabber.h"
+
+class KWinWaylandImageGrabber : public ImageGrabber
+{
+    Q_OBJECT
+
+    public:
+
+    explicit KWinWaylandImageGrabber(QObject * parent = 0);
+    virtual ~KWinWaylandImageGrabber();
+
+    bool onClickGrabSupported() const Q_DECL_OVERRIDE;
+
+    protected:
+
+    void grabFullScreen()          Q_DECL_OVERRIDE;
+    void grabCurrentScreen()       Q_DECL_OVERRIDE;
+    void grabActiveWindow()        Q_DECL_OVERRIDE;
+    void grabRectangularRegion()   Q_DECL_OVERRIDE;
+    void grabWindowUnderCursor()   Q_DECL_OVERRIDE;
+    void grabTransientWithParent() Q_DECL_OVERRIDE;
+    QPixmap blendCursorImage(const QPixmap &pixmap, int x, int y, int width, 
int height) Q_DECL_OVERRIDE;
+
+    private:
+
+    void startReadImage(int readPipe);
+    enum class Mode {
+        Window,
+        CurrentScreen,
+        FullScreen
+    };
+    template <typename T>
+    void callDBus(Mode mode, int writeFd, T argument);
+    template <typename T>
+    void grab(Mode mode, T argument);
+};
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spectacle-16.12.0/src/SpectacleCore.cpp 
new/spectacle-16.12.1/src/SpectacleCore.cpp
--- old/spectacle-16.12.0/src/SpectacleCore.cpp 2016-12-06 20:57:05.000000000 
+0100
+++ new/spectacle-16.12.1/src/SpectacleCore.cpp 2017-01-09 06:50:34.000000000 
+0100
@@ -40,6 +40,7 @@
 #ifdef XCB_FOUND
 #include "PlatformBackends/X11ImageGrabber.h"
 #endif
+#include "PlatformBackends/KWinWaylandImageGrabber.h"
 
 SpectacleCore::SpectacleCore(StartMode startMode, ImageGrabber::GrabMode 
grabMode, QString &saveFileName,
                qint64 delayMsec, bool notifyOnGrab, QObject *parent) :
@@ -62,10 +63,13 @@
     }
 
 #ifdef XCB_FOUND
-    if (qApp->platformName() == QStringLiteral("xcb")) {
+    if (KWindowSystem::isPlatformX11()) {
         mImageGrabber = new X11ImageGrabber;
     }
 #endif
+    if (!mImageGrabber && KWindowSystem::isPlatformWayland()) {
+        mImageGrabber = new KWinWaylandImageGrabber;
+    }
 
     if (!mImageGrabber) {
         mImageGrabber = new DummyImageGrabber;


Reply via email to