please don't laugh - i'm serious.
temporarily, i've added options to set the xpos, ypos and also to set
"borderless" mode. the combination is designed to place flash scripts
on a screen where they cannot be tampered with. primary focus: klash
(nothing else). TODO: set "on top".
l.
diff -aurwbB --exclude='*.m4' --exclude='*.in' --exclude='config*' --exclude=ltdl.c orig/gnash-0.8.2/gui/gnash.cpp gnash-0.8.2/gui/gnash.cpp
--- orig/gnash-0.8.2/gui/gnash.cpp 2008-03-03 23:15:11.000000000 +0000
+++ gnash-0.8.2/gui/gnash.cpp 2008-06-30 17:06:44.000000000 +0100
@@ -124,8 +124,11 @@
" -vp Be (very) verbose about parsing\n"
" -va Be (very) verbose about action execution\n"
" -w Produce the disk based debug log\n"
+ " -B Borderless window (no close button, no borders etc.)\n"
" -j <width > Set window width\n"
" -k <height> Set window height\n"
+ " -X <x> Set window x position\n"
+ " -Y <y> Set window y position\n"
" -1 Play once; exit when/if movie reaches the last frame\n"
), _(
" -g Turn on the Flash debugger\n"
@@ -228,7 +231,7 @@
}
}
- while ((c = getopt (argc, argv, "hvaps:cd:x:r:t:b:1wj:k:u:P:U:gVf:F:")) != -1)
+ while ((c = getopt (argc, argv, "hvaps:cd:x:r:t:b:1wj:k:u:P:U:gVf:F:X:Y:B")) != -1)
{
switch (c) {
// case 'c' (Disable SDL core dumps) is decoded in sdl.cpp:init()
@@ -290,6 +293,18 @@
player.setHostFD ( fd );
break;
}
+ case 'B':
+ player.set_borderless(true);
+ log_debug (_("Setting borderless mode"));
+ break;
+ case 'Y':
+ player.setY ( strtol(optarg, NULL, 0) );
+ log_debug (_("Setting y pos to " SIZET_FMT), player.getY());
+ break;
+ case 'X':
+ player.setX ( strtol(optarg, NULL, 0) );
+ log_debug (_("Setting x pos to " SIZET_FMT), player.getX());
+ break;
case 'j':
width_given = true;
player.setWidth ( strtol(optarg, NULL, 0) );
diff -aurwbB --exclude='*.m4' --exclude='*.in' --exclude='config*' --exclude=ltdl.c orig/gnash-0.8.2/gui/gui.h gnash-0.8.2/gui/gui.h
--- orig/gnash-0.8.2/gui/gui.h 2008-01-21 20:55:42.000000000 +0000
+++ gnash-0.8.2/gui/gui.h 2008-06-30 16:56:05.000000000 +0100
@@ -91,6 +91,14 @@
*/
virtual bool createWindow(const char* title, int width, int height) = 0;
+ /** \brief
+ * Move the window on screen
+ *
+ * @param x The desired window x position in pixels.
+ * @param y The desired window y position in pixels.
+ */
+ virtual void moveWindow(int x, int y) { }
+
/// Start main rendering loop.
virtual bool run() = 0;
@@ -364,6 +372,12 @@
// True if Gnash is running in fullscreen
bool _fullscreen;
+ /// Called by Gui::stop(). This can be used by GUIs to implement pause
+ /// widgets (so that resuming a stopped animation is more user-friendly)
+ virtual void stopHook() {}
+ /// Called by Gui::play().
+ virtual void playHook() {}
+
private:
bool display(movie_root* m);
@@ -423,7 +437,7 @@
/// Named constructors
std::auto_ptr<Gui> createGTKGui(unsigned long xid, float scale, bool loop, unsigned int depth);
-std::auto_ptr<Gui> createKDEGui(unsigned long xid, float scale, bool loop, unsigned int depth);
+std::auto_ptr<Gui> createKDEGui(unsigned long xid, float scale, bool loop, unsigned int depth, bool borderless);
std::auto_ptr<Gui> createSDLGui(unsigned long xid, float scale, bool loop, unsigned int depth);
std::auto_ptr<Gui> createFLTKGui(unsigned long xid, float scale, bool loop, unsigned int depth);
std::auto_ptr<Gui> createFBGui(unsigned long xid, float scale, bool loop, unsigned int depth);
Only in gnash-0.8.2/gui: .gui.h.swp
diff -aurwbB --exclude='*.m4' --exclude='*.in' --exclude='config*' --exclude=ltdl.c orig/gnash-0.8.2/gui/gui_kde.cpp gnash-0.8.2/gui/gui_kde.cpp
--- orig/gnash-0.8.2/gui/gui_kde.cpp 2008-01-21 20:55:41.000000000 +0000
+++ gnash-0.8.2/gui/gui_kde.cpp 2008-06-30 16:55:07.000000000 +0100
@@ -32,12 +32,14 @@
namespace gnash {
#ifdef GUI_KDE
-std::auto_ptr<Gui> createKDEGui(unsigned long windowid, float scale, bool do_loop, unsigned int bit_depth)
+std::auto_ptr<Gui> createKDEGui(unsigned long windowid, float scale, bool do_loop, unsigned int bit_depth, bool borderless)
{
- return std::auto_ptr<Gui>(new KdeGui(windowid, scale, do_loop, bit_depth));
+ return std::auto_ptr<Gui>(new KdeGui(windowid, scale, do_loop, bit_depth,
+ borderless));
}
#else // ! GUI_KDE
-std::auto_ptr<Gui> createKDEGui(unsigned long , float , bool , unsigned int )
+std::auto_ptr<Gui> createKDEGui(unsigned long , float , bool , unsigned int,
+ bool);
{
throw GnashException("Support for KDE gui was not compiled in");
}
Only in gnash-0.8.2/gui: .gui_kde.cpp.swp
Only in gnash-0.8.2/gui: Info.plist
diff -aurwbB --exclude='*.m4' --exclude='*.in' --exclude='config*' --exclude=ltdl.c orig/gnash-0.8.2/gui/kde.cpp gnash-0.8.2/gui/kde.cpp
--- orig/gnash-0.8.2/gui/kde.cpp 2008-02-06 13:51:07.000000000 +0000
+++ gnash-0.8.2/gui/kde.cpp 2008-06-30 17:09:46.000000000 +0100
@@ -39,6 +39,7 @@
#include "gnash.h"
#include "movie_definition.h"
#include "log.h"
+#include <kwin.h>
#include "gui.h"
#include "kdesup.h"
@@ -55,8 +56,10 @@
}
-KdeGui::KdeGui(unsigned long xid, float scale, bool loop, unsigned int depth)
- : Gui(xid, scale, loop, depth)
+KdeGui::KdeGui(unsigned long xid, float scale, bool loop, unsigned int depth,
+ bool borderless)
+ : Gui(xid, scale, loop, depth),
+ no_border(borderless)
{
}
@@ -66,6 +69,7 @@
// GNASH_REPORT_FUNCTION;
_qapp.reset(new QApplication(argc, *argv));
_qwidget.reset(new qwidget(this));
+ /*_qwidget.setWFlags( Qt::WStyle_Customize | Qt::WStyle_NoBorder);*/
#ifdef HAVE_KDE
if (_xid) {
QXEmbed::initialize();
@@ -105,6 +109,12 @@
}
void
+KdeGui::moveWindow(int x, int y)
+{
+ _qwidget->move(x, y);
+}
+
+void
KdeGui::renderBuffer()
{
// GNASH_REPORT_FUNCTION;
@@ -429,8 +439,12 @@
_godfather->notify_mouse_moved(newX, newY);
}
-qwidget::qwidget(KdeGui* godfather)
+qwidget::qwidget(KdeGui* godfather):
+ WIDGETCLASS(0, 0, (godfather && godfather->no_border)?Qt::WStyle_Customize | Qt::WStyle_NoBorder : 0)
{
+ if (godfather && godfather->no_border)
+ KWin::setState( winId(), NET::StaysOnTop );
+
_qmenu.insertItem(_("Play Movie"), this, SLOT(menuitem_play_callback()));
_qmenu.insertItem(_("Pause Movie"), this, SLOT(menuitem_pause_callback()));
_qmenu.insertItem(_("Stop Movie"), this, SLOT(menuitem_stop_callback()));
Only in gnash-0.8.2/gui: .kde.cpp.swp
Only in gnash-0.8.2/gui: kde-gnash
Only in gnash-0.8.2/gui: kde_gnash-gnash.o
Only in gnash-0.8.2/gui: kde_gnash-gui_kde.o
Only in gnash-0.8.2/gui: kde_gnash-gui.o
Only in gnash-0.8.2/gui: kde_gnash-kde_glue_agg.o
Only in gnash-0.8.2/gui: kde_gnash-kde.o
Only in gnash-0.8.2/gui: kde_gnash-NullGui.o
Only in gnash-0.8.2/gui: kde_gnash-Player.o
diff -aurwbB --exclude='*.m4' --exclude='*.in' --exclude='config*' --exclude=ltdl.c orig/gnash-0.8.2/gui/kdesup.h gnash-0.8.2/gui/kdesup.h
--- orig/gnash-0.8.2/gui/kdesup.h 2008-02-06 13:51:07.000000000 +0000
+++ gnash-0.8.2/gui/kdesup.h 2008-06-30 17:00:03.000000000 +0100
@@ -89,10 +89,12 @@
{
public:
- KdeGui(unsigned long xid, float scale, bool loop, unsigned int depth);
+ KdeGui(unsigned long xid, float scale, bool loop, unsigned int depth,
+ bool borderless);
virtual ~KdeGui();
virtual bool init(int argc, char **argv[]);
virtual bool createWindow(const char* windowtitle, int width, int height);
+ virtual void moveWindow(int x, int y);
virtual bool run();
virtual bool createMenu();
virtual bool setupEvents();
@@ -104,7 +106,10 @@
void setInvalidatedRegions(const InvalidatedRanges& ranges);
void resize(int width, int height);
void quit();
+ bool no_border;
+
private:
+
std::auto_ptr<QApplication> _qapp;
std::auto_ptr<qwidget> _qwidget;
GLUE _glue;
Only in gnash-0.8.2/gui: .kdesup.h.swp
Only in gnash-0.8.2/gui: klash.moc
Only in gnash-0.8.2/gui: .libs
Only in gnash-0.8.2/gui: Makefile
diff -aurwbB --exclude='*.m4' --exclude='*.in' --exclude='config*' --exclude=ltdl.c orig/gnash-0.8.2/gui/Player.cpp gnash-0.8.2/gui/Player.cpp
--- orig/gnash-0.8.2/gui/Player.cpp 2008-02-19 19:20:49.000000000 +0000
+++ gnash-0.8.2/gui/Player.cpp 2008-06-30 17:04:58.000000000 +0100
@@ -76,10 +76,13 @@
#endif
scale(1.0f),
delay(0),
+ xpos(0),
+ ypos(0),
width(0),
height(0),
windowid(0),
do_loop(true),
+ borderless(false),
do_render(true),
do_sound(true),
exit_timeout(0),
@@ -353,6 +356,8 @@
// Now that we know about movie size, create gui window.
_gui->createWindow(_url.c_str(), width, height);
+ log_debug(_("moving to " SIZET_FMT "x" SIZET_FMT "."), getX(), getY());
+ _gui->moveWindow(getX(), getY());
SystemClock clock; // use system clock here...
movie_root& root = VM::init(*_movie_def, clock).getRoot();
@@ -404,7 +409,7 @@
#endif
#ifdef GUI_KDE
- return createKDEGui(windowid, scale, do_loop, bit_depth);
+ return createKDEGui(windowid, scale, do_loop, bit_depth, borderless);
#endif
#ifdef GUI_SDL
Only in gnash-0.8.2/gui: .Player.cpp.swp
diff -aurwbB --exclude='*.m4' --exclude='*.in' --exclude='config*' --exclude=ltdl.c orig/gnash-0.8.2/gui/Player.h gnash-0.8.2/gui/Player.h
--- orig/gnash-0.8.2/gui/Player.h 2008-01-30 14:51:47.000000000 +0000
+++ gnash-0.8.2/gui/Player.h 2008-06-30 17:07:06.000000000 +0100
@@ -95,6 +95,14 @@
}
#endif // def GNASH_FPS_DEBUG
+ void set_borderless(bool b) { borderless=b; }
+
+ void setY(size_t y) { ypos=y; }
+ size_t getY() { return ypos; }
+
+ void setX(size_t x) { xpos=x; }
+ size_t getX() { return xpos; }
+
void setWidth(size_t w) { width=w; }
size_t getWidth() { return width; }
@@ -170,12 +178,19 @@
unsigned int delay;
+ size_t xpos;
+
+ size_t ypos;
+
size_t width;
size_t height;
unsigned long windowid;
+ // window should not have a border, or "close" button - nothing.
+ bool borderless;
+
bool do_loop;
bool do_render;
_______________________________________________
Gnash-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnash-dev