[aseprite] 82/128: Use clip library to copy/paste text
Tobias Hansen
thansen at moszumanska.debian.org
Mon May 9 21:24:26 UTC 2016
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit 924c2ac86ae2882b5e5a7fee8828bad220d615a8
Author: David Capello <davidcapello at gmail.com>
Date: Thu Apr 28 23:26:20 2016 -0300
Use clip library to copy/paste text
In this way we can remove all the code related to handle clipboard text
from she and ui libraries.
---
.gitmodules | 3 ++
src/CMakeLists.txt | 1 +
src/app/CMakeLists.txt | 1 +
src/app/modules/gui.cpp | 6 ---
src/clip | 1 +
src/she/CMakeLists.txt | 2 -
src/she/clipboard.h | 27 -------------
src/she/clipboard_simple.h | 38 -------------------
src/she/common/system.h | 14 -------
src/she/osx/clipboard.h | 28 --------------
src/she/osx/clipboard.mm | 36 ------------------
src/she/she.h | 1 -
src/she/system.h | 2 -
src/she/win/clipboard.cpp | 94 ----------------------------------------------
src/she/win/clipboard.h | 28 --------------
src/ui/CMakeLists.txt | 1 -
src/ui/clipboard.cpp | 42 ---------------------
src/ui/clipboard.h | 22 -----------
src/ui/clipboard_win.h | 55 ---------------------------
src/ui/entry.cpp | 13 +++----
src/ui/manager.cpp | 6 ---
src/ui/manager.h | 4 --
src/ui/ui.h | 1 -
23 files changed, 11 insertions(+), 415 deletions(-)
diff --git a/.gitmodules b/.gitmodules
index 630ab02..a2126b7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -27,3 +27,6 @@
[submodule "third_party/libpng"]
path = third_party/libpng
url = https://github.com/aseprite/libpng.git
+[submodule "src/clip"]
+ path = src/clip
+ url = https://github.com/aseprite/clip.git
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8585516..ee97662 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -86,6 +86,7 @@ add_subdirectory(base)
include_directories(${BASE_INCLUDE_DIR})
add_subdirectory(cfg)
+add_subdirectory(clip)
add_subdirectory(css)
add_subdirectory(doc)
add_subdirectory(filters)
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index 2c0e402..04eea0a 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -439,6 +439,7 @@ add_library(app-lib
target_link_libraries(app-lib
base-lib
cfg-lib
+ clip
css-lib
doc-lib
filters-lib
diff --git a/src/app/modules/gui.cpp b/src/app/modules/gui.cpp
index 49eb8e6..6b4b1e6 100644
--- a/src/app/modules/gui.cpp
+++ b/src/app/modules/gui.cpp
@@ -37,7 +37,6 @@
#include "base/shared_ptr.h"
#include "base/unique_ptr.h"
#include "doc/sprite.h"
-#include "she/clipboard.h"
#include "she/display.h"
#include "she/error.h"
#include "she/surface.h"
@@ -82,7 +81,6 @@ protected:
};
static she::Display* main_display = NULL;
-static she::Clipboard* main_clipboard = NULL;
static CustomizedGuiManager* manager = NULL;
static Theme* gui_theme = NULL;
@@ -176,12 +174,9 @@ int init_module_gui()
return -1;
}
- main_clipboard = she::instance()->createClipboard();
-
// Create the default-manager
manager = new CustomizedGuiManager();
manager->setDisplay(main_display);
- manager->setClipboard(main_clipboard);
// Setup the GUI theme for all widgets
gui_theme = new SkinTheme();
@@ -208,7 +203,6 @@ void exit_module_gui()
CurrentTheme::set(NULL);
delete gui_theme;
- main_clipboard->dispose();
main_display->dispose();
}
diff --git a/src/clip b/src/clip
new file mode 160000
index 0000000..e57130a
--- /dev/null
+++ b/src/clip
@@ -0,0 +1 @@
+Subproject commit e57130a56659d001d7bc33081c7cb3abe0621be2
diff --git a/src/she/CMakeLists.txt b/src/she/CMakeLists.txt
index 1841aa6..77b3090 100644
--- a/src/she/CMakeLists.txt
+++ b/src/she/CMakeLists.txt
@@ -211,13 +211,11 @@ endif()
if(WIN32)
list(APPEND SHE_SOURCES
- win/clipboard.cpp
win/native_dialogs.cpp)
endif()
if(APPLE)
list(APPEND SHE_SOURCES
- osx/clipboard.mm
osx/logger.mm
osx/native_dialogs.mm)
endif()
diff --git a/src/she/clipboard.h b/src/she/clipboard.h
deleted file mode 100644
index 01397b0..0000000
--- a/src/she/clipboard.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SHE library
-// Copyright (C) 2012-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifndef SHE_CLIPBOARD_H_INCLUDED
-#define SHE_CLIPBOARD_H_INCLUDED
-#pragma once
-
-#include "she/display_handle.h"
-
-#include <string>
-
-namespace she {
-
- class Clipboard {
- public:
- virtual ~Clipboard() { }
- virtual void dispose() = 0;
- virtual std::string getText(DisplayHandle hwnd) = 0;
- virtual void setText(DisplayHandle hwnd, const std::string& text) = 0;
- };
-
-} // namespace she
-
-#endif
diff --git a/src/she/clipboard_simple.h b/src/she/clipboard_simple.h
deleted file mode 100644
index 5e7fb9c..0000000
--- a/src/she/clipboard_simple.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// SHE library
-// Copyright (C) 2012-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifndef SHE_CLIPBOARD_IMPL_H_INCLUDED
-#define SHE_CLIPBOARD_IMPL_H_INCLUDED
-#pragma once
-
-#include "she/clipboard.h"
-
-namespace she {
-
- class ClipboardImpl : public Clipboard {
- public:
- ~ClipboardImpl() {
- }
-
- void dispose() override {
- delete this;
- }
-
- std::string getText(DisplayHandle) override {
- return m_text;
- }
-
- void setText(DisplayHandle, const std::string& text) override {
- m_text = text;
- }
-
- private:
- std::string m_text;
- };
-
-} // namespace she
-
-#endif
diff --git a/src/she/common/system.h b/src/she/common/system.h
index f03a0ce..54097eb 100644
--- a/src/she/common/system.h
+++ b/src/she/common/system.h
@@ -9,16 +9,12 @@
#pragma once
#ifdef _WIN32
- #include "she/win/clipboard.h"
#include "she/win/native_dialogs.h"
#elif defined(__APPLE__)
- #include "she/osx/clipboard.h"
#include "she/osx/native_dialogs.h"
#elif defined(ASEPRITE_WITH_GTK_FILE_DIALOG_SUPPORT) && defined(__linux__)
- #include "she/clipboard_simple.h"
#include "she/gtk/native_dialogs.h"
#else
- #include "she/clipboard_simple.h"
#include "she/native_dialogs.h"
#endif
@@ -68,16 +64,6 @@ public:
return m_nativeDialogs;
}
- Clipboard* createClipboard() override {
-#ifdef _WIN32
- return new ClipboardWin32();
-#elif defined(__APPLE__)
- return new ClipboardOSX();
-#else
- return new ClipboardImpl();
-#endif
- }
-
Font* loadSpriteSheetFont(const char* filename, int scale) override {
Surface* sheet = loadRgbaSurface(filename);
Font* font = nullptr;
diff --git a/src/she/osx/clipboard.h b/src/she/osx/clipboard.h
deleted file mode 100644
index 94f350f..0000000
--- a/src/she/osx/clipboard.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// SHE library
-// Copyright (C) 2012-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifndef SHE_OSX_CLIPBOARD_H_INCLUDED
-#define SHE_OSX_CLIPBOARD_H_INCLUDED
-#pragma once
-
-#include "base/string.h"
-#include "she/clipboard.h"
-
-namespace she {
-
- class ClipboardOSX : public Clipboard {
- public:
- void dispose() override;
- std::string getText(DisplayHandle display) override;
- void setText(DisplayHandle display, const std::string& text) override;
-
- private:
- std::string m_text;
- };
-
-} // namespace she
-
-#endif
diff --git a/src/she/osx/clipboard.mm b/src/she/osx/clipboard.mm
deleted file mode 100644
index 0acccd9..0000000
--- a/src/she/osx/clipboard.mm
+++ /dev/null
@@ -1,36 +0,0 @@
-// SHE library
-// Copyright (C) 2012-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#include <Cocoa/Cocoa.h>
-
-#include "she/osx/clipboard.h"
-
-namespace she {
-
-void ClipboardOSX::dispose()
-{
- delete this;
-}
-
-std::string ClipboardOSX::getText(DisplayHandle display)
-{
- NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
- NSString* string = [pasteboard stringForType:NSStringPboardType];
- if (string)
- return std::string([string UTF8String]);
- else
- return std::string();
-}
-
-void ClipboardOSX::setText(DisplayHandle display, const std::string& text)
-{
- NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
- [pasteboard clearContents];
- [pasteboard setString:[NSString stringWithUTF8String:text.c_str()]
- forType:NSStringPboardType];
-}
-
-} // namespace she
diff --git a/src/she/she.h b/src/she/she.h
index 44d0bec..87c334b 100644
--- a/src/she/she.h
+++ b/src/she/she.h
@@ -8,7 +8,6 @@
#define SHE_H_INCLUDED
#pragma once
-#include "she/clipboard.h"
#include "she/display.h"
#include "she/error.h"
#include "she/event.h"
diff --git a/src/she/system.h b/src/she/system.h
index 2b1535b..9cf224b 100644
--- a/src/she/system.h
+++ b/src/she/system.h
@@ -15,7 +15,6 @@
namespace she {
- class Clipboard;
class Display;
class EventQueue;
class Font;
@@ -49,7 +48,6 @@ namespace she {
virtual Surface* loadRgbaSurface(const char* filename) = 0;
virtual Font* loadSpriteSheetFont(const char* filename, int scale = 1) = 0;
virtual Font* loadTrueTypeFont(const char* filename, int height) = 0;
- virtual Clipboard* createClipboard() = 0;
};
System* create_system();
diff --git a/src/she/win/clipboard.cpp b/src/she/win/clipboard.cpp
deleted file mode 100644
index b2e5460..0000000
--- a/src/she/win/clipboard.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-// SHE library
-// Copyright (C) 2012-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "base/string.h"
-#include "she/win/clipboard.h"
-
-#include <windows.h>
-
-namespace {
-
-bool open_clipboard(HWND hwnd)
-{
- for (int i=0; i<5; ++i) {
- if (OpenClipboard(hwnd))
- return true;
-
- Sleep(100);
- }
- return false;
-}
-
-}
-
-namespace she {
-
-void ClipboardWin32::dispose()
-{
- delete this;
-}
-
-std::string ClipboardWin32::getText(DisplayHandle hwnd)
-{
- std::string text;
-
- if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
- if (open_clipboard((HWND)hwnd)) {
- HGLOBAL hglobal = GetClipboardData(CF_UNICODETEXT);
- if (hglobal) {
- LPWSTR lpstr = static_cast<LPWSTR>(GlobalLock(hglobal));
- if (lpstr) {
- text = base::to_utf8(lpstr).c_str();
- GlobalUnlock(hglobal);
- }
- }
- CloseClipboard();
- }
- }
- else if (IsClipboardFormatAvailable(CF_TEXT)) {
- if (open_clipboard((HWND)hwnd)) {
- HGLOBAL hglobal = GetClipboardData(CF_TEXT);
- if (hglobal) {
- LPSTR lpstr = static_cast<LPSTR>(GlobalLock(hglobal));
- if (lpstr) {
- text = lpstr;
- GlobalUnlock(hglobal);
- }
- }
- CloseClipboard();
- }
- }
-
- return text;
-}
-
-void ClipboardWin32::setText(DisplayHandle hwnd, const std::string& text)
-{
- if (open_clipboard((HWND)hwnd)) {
- EmptyClipboard();
-
- if (!text.empty()) {
- std::wstring wstr = base::from_utf8(text);
- int len = wstr.size();
-
- HGLOBAL hglobal = GlobalAlloc(GMEM_MOVEABLE |
- GMEM_ZEROINIT, sizeof(WCHAR)*(len+1));
-
- LPWSTR lpstr = static_cast<LPWSTR>(GlobalLock(hglobal));
- std::copy(wstr.begin(), wstr.end(), lpstr);
- GlobalUnlock(hglobal);
-
- SetClipboardData(CF_UNICODETEXT, hglobal);
- }
- CloseClipboard();
- }
-}
-
-} // namespace she
diff --git a/src/she/win/clipboard.h b/src/she/win/clipboard.h
deleted file mode 100644
index 479459b..0000000
--- a/src/she/win/clipboard.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// SHE library
-// Copyright (C) 2012-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifndef SHE_WIN_CLIPBOARD_H_INCLUDED
-#define SHE_WIN_CLIPBOARD_H_INCLUDED
-#pragma once
-
-#include "base/string.h"
-#include "she/clipboard.h"
-
-namespace she {
-
- class ClipboardWin32 : public Clipboard {
- public:
- void dispose() override;
- std::string getText(DisplayHandle hwnd) override;
- void setText(DisplayHandle hwnd, const std::string& text) override;
-
- private:
- std::string m_text;
- };
-
-} // namespace she
-
-#endif
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index b787daf..72e1adc 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -10,7 +10,6 @@ add_library(ui-lib
alert.cpp
box.cpp
button.cpp
- clipboard.cpp
combobox.cpp
component.cpp
cursor.cpp
diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp
deleted file mode 100644
index dc07b2f..0000000
--- a/src/ui/clipboard.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Aseprite UI Library
-// Copyright (C) 2001-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "ui/clipboard.h"
-
-#include "she/clipboard.h"
-#include "she/display.h"
-#include "ui/manager.h"
-
-#include <string>
-
-static std::string clipboard_text;
-
-namespace ui {
-namespace clipboard {
-
-const char* get_text()
-{
- Manager* manager = Manager::getDefault();
- clipboard_text = manager->getClipboard()->getText(
- manager->getDisplay()->nativeHandle());
- return clipboard_text.c_str();
-}
-
-void set_text(const char* text)
-{
- Manager* manager = Manager::getDefault();
- clipboard_text = (text ? text: "");
- manager->getClipboard()->setText(
- manager->getDisplay()->nativeHandle(),
- clipboard_text);
-}
-
-} // namespace clipboard
-} // namespace ui
diff --git a/src/ui/clipboard.h b/src/ui/clipboard.h
deleted file mode 100644
index abf43cf..0000000
--- a/src/ui/clipboard.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Aseprite UI Library
-// Copyright (C) 2001-2013 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifndef UI_CLIPBOARD_H_INCLUDED
-#define UI_CLIPBOARD_H_INCLUDED
-#pragma once
-
-#include "ui/base.h"
-
-namespace ui {
- namespace clipboard {
-
- const char* get_text();
- void set_text(const char* text);
-
- } // namespace clipboard
-} // namespace ui
-
-#endif
diff --git a/src/ui/clipboard_win.h b/src/ui/clipboard_win.h
deleted file mode 100644
index 696f068..0000000
--- a/src/ui/clipboard_win.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Aseprite UI Library
-// Copyright (C) 2001-2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#include "base/string.h"
-
-#include <algorithm>
-#include <windows.h>
-
-namespace {
-
-void get_system_clipboard_text(std::string& text)
-{
- if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
- if (OpenClipboard(win_get_window())) {
- HGLOBAL hglobal = GetClipboardData(CF_UNICODETEXT);
- if (hglobal != NULL) {
- LPWSTR lpstr = static_cast<LPWSTR>(GlobalLock(hglobal));
- if (lpstr != NULL) {
- text = base::to_utf8(lpstr).c_str();
- GlobalUnlock(hglobal);
- }
- }
- CloseClipboard();
- }
- }
-}
-
-void set_system_clipboard_text(const std::string& text)
-{
- if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
- if (OpenClipboard(win_get_window())) {
- EmptyClipboard();
-
- if (!text.empty()) {
- std::wstring wstr = base::from_utf8(text);
- int len = wstr.size();
-
- HGLOBAL hglobal = GlobalAlloc(GMEM_MOVEABLE |
- GMEM_ZEROINIT, sizeof(WCHAR)*(len+1));
-
- LPWSTR lpstr = static_cast<LPWSTR>(GlobalLock(hglobal));
- std::copy(wstr.begin(), wstr.end(), lpstr);
- GlobalUnlock(hglobal);
-
- SetClipboardData(CF_UNICODETEXT, hglobal);
- }
- CloseClipboard();
- }
- }
-}
-
-}
diff --git a/src/ui/entry.cpp b/src/ui/entry.cpp
index 647c82d..c382b09 100644
--- a/src/ui/entry.cpp
+++ b/src/ui/entry.cpp
@@ -12,8 +12,8 @@
#include "base/bind.h"
#include "base/string.h"
+#include "clip/clip.h"
#include "she/font.h"
-#include "ui/clipboard.h"
#include "ui/manager.h"
#include "ui/menu.h"
#include "ui/message.h"
@@ -611,7 +611,7 @@ void Entry::executeCmd(EntryCmd cmd, int unicodeChar, bool shift_pressed)
// *cut* text!
if (cmd == EntryCmd::Cut) {
std::wstring selected = text.substr(selbeg, selend - selbeg + 1);
- clipboard::set_text(base::to_utf8(selected).c_str());
+ clip::set_text(base::to_utf8(selected));
}
// remove text
@@ -629,11 +629,8 @@ void Entry::executeCmd(EntryCmd cmd, int unicodeChar, bool shift_pressed)
break;
case EntryCmd::Paste: {
- const char* clipboard_str;
-
- if ((clipboard_str = clipboard::get_text())) {
- std::string clipboard(clipboard_str);
-
+ std::string clipboard;
+ if (clip::get_text(clipboard)) {
// delete the entire selection
if (selbeg >= 0) {
text.erase(selbeg, selend-selbeg+1);
@@ -659,7 +656,7 @@ void Entry::executeCmd(EntryCmd cmd, int unicodeChar, bool shift_pressed)
case EntryCmd::Copy:
if (selbeg >= 0) {
std::wstring selected = text.substr(selbeg, selend - selbeg + 1);
- clipboard::set_text(base::to_utf8(selected).c_str());
+ clip::set_text(base::to_utf8(selected));
}
break;
diff --git a/src/ui/manager.cpp b/src/ui/manager.cpp
index 7f3ea7a..1317f68 100644
--- a/src/ui/manager.cpp
+++ b/src/ui/manager.cpp
@@ -87,7 +87,6 @@ static int cmp_down(Widget* widget, int x, int y);
Manager::Manager()
: Widget(kManagerWidget)
, m_display(NULL)
- , m_clipboard(NULL)
, m_eventQueue(NULL)
, m_lockedWindow(NULL)
, m_mouseButtons(kButtonNone)
@@ -154,11 +153,6 @@ void Manager::setDisplay(she::Display* display)
onNewDisplayConfiguration();
}
-void Manager::setClipboard(she::Clipboard* clipboard)
-{
- m_clipboard = clipboard;
-}
-
void Manager::run()
{
MessageLoop loop(this);
diff --git a/src/ui/manager.h b/src/ui/manager.h
index cbc938d..520a3a8 100644
--- a/src/ui/manager.h
+++ b/src/ui/manager.h
@@ -16,7 +16,6 @@
#include "ui/widget.h"
namespace she {
- class Clipboard;
class Display;
class EventQueue;
}
@@ -37,10 +36,8 @@ namespace ui {
~Manager();
she::Display* getDisplay() { return m_display; }
- she::Clipboard* getClipboard() { return m_clipboard; }
void setDisplay(she::Display* display);
- void setClipboard(she::Clipboard* clipboard);
// Executes the main message loop.
void run();
@@ -166,7 +163,6 @@ namespace ui {
WidgetsList m_garbage;
she::Display* m_display;
- she::Clipboard* m_clipboard;
she::EventQueue* m_eventQueue;
gfx::Region m_invalidRegion; // Invalid region (we didn't receive paint messages yet for this).
diff --git a/src/ui/ui.h b/src/ui/ui.h
index f5b4f99..039e6c3 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -13,7 +13,6 @@
#include "ui/base.h"
#include "ui/box.h"
#include "ui/button.h"
-#include "ui/clipboard.h"
#include "ui/combobox.h"
#include "ui/component.h"
#include "ui/cursor.h"
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list