projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix 2119775: "Zoom tool doesn't work if drag outside the window". The problem was...
[synfig.git]
/
synfig-studio
/
trunk
/
src
/
gtkmm
/
dialogsettings.cpp
diff --git
a/synfig-studio/trunk/src/gtkmm/dialogsettings.cpp
b/synfig-studio/trunk/src/gtkmm/dialogsettings.cpp
index
51817d3
..
7f38a83
100644
(file)
--- a/
synfig-studio/trunk/src/gtkmm/dialogsettings.cpp
+++ b/
synfig-studio/trunk/src/gtkmm/dialogsettings.cpp
@@
-2,10
+2,11
@@
/*! \file dialogsettings.cpp
** \brief Template File
**
/*! \file dialogsettings.cpp
** \brief Template File
**
-** $Id
: dialogsettings.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp
$
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007, 2008 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
@@
-31,6
+32,9
@@
#include "dialogsettings.h"
#include <synfigapp/main.h>
#include "dialogsettings.h"
#include <synfigapp/main.h>
+#include <gdkmm/general.h>
+
+#include "general.h"
#endif
#endif
@@
-66,14
+70,14
@@
DialogSettings::get_value(const synfig::String& key, synfig::String& value)const
{
if(key=="pos")
{
{
if(key=="pos")
{
- if(!window->is_visible())return false;
+
//
if(!window->is_visible())return false;
int x,y; window->get_position(x,y);
value=strprintf("%d %d",x,y);
return true;
}
if(key=="size")
{
int x,y; window->get_position(x,y);
value=strprintf("%d %d",x,y);
return true;
}
if(key=="size")
{
- if(!window->is_visible())return false;
+
//
if(!window->is_visible())return false;
int x,y; window->get_size(x,y);
value=strprintf("%d %d",x,y);
return true;
int x,y; window->get_size(x,y);
value=strprintf("%d %d",x,y);
return true;
@@
-114,26
+118,37
@@
DialogSettings::get_value(const synfig::String& key, synfig::String& value)const
bool
DialogSettings::set_value(const synfig::String& key,const synfig::String& value)
{
bool
DialogSettings::set_value(const synfig::String& key,const synfig::String& value)
{
+ int screen_w(Gdk::screen_width());
+ int screen_h(Gdk::screen_height());
+
if(value.empty())
return false;
if(value.empty())
return false;
-
- if(key=="pos")
+
+ if(key=="pos")
{
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
{
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
+
+ if (x > screen_w) x = screen_w - 150; if (x < 0) x = 0;
+ if (y > screen_h) y = screen_h - 150; if (y < 0) y = 0;
+
window->move(x,y);
return true;
}
window->move(x,y);
return true;
}
- if(key=="size")
+ if(key=="size")
{
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
{
int x,y;
if(!strscanf(value,"%d %d",&x, &y))
return false;
+
+ if (x > screen_w) x = 150; if (x < 0) x = 0;
+ if (y > screen_h) y = 150; if (y < 0) y = 0;
+
window->set_default_size(x,y);
return true;
}
window->set_default_size(x,y);
return true;
}
- if(key=="x")
+ if(key=="x")
{
int x,y; window->get_position(x,y);
x=atoi(value.c_str());
{
int x,y; window->get_position(x,y);
x=atoi(value.c_str());
@@
-177,10
+192,10
@@
synfigapp::Settings::KeyList
DialogSettings::get_key_list()const
{
synfigapp::Settings::KeyList ret(synfigapp::Settings::get_key_list());
DialogSettings::get_key_list()const
{
synfigapp::Settings::KeyList ret(synfigapp::Settings::get_key_list());
-
+
ret.push_back("size");
ret.push_back("pos");
ret.push_back("visible");
ret.push_back("size");
ret.push_back("pos");
ret.push_back("visible");
-
+
return ret;
}
return ret;
}