diff options
Diffstat (limited to 'util/fbrun')
-rw-r--r-- | util/fbrun/main.cc | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/util/fbrun/main.cc b/util/fbrun/main.cc index b68ea83..68cf6f6 100644 --- a/util/fbrun/main.cc +++ b/util/fbrun/main.cc | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: main.cc,v 1.11 2003/12/01 18:58:53 fluxgen Exp $ | 22 | // $Id: main.cc,v 1.12 2004/09/03 14:18:48 akir Exp $ |
23 | 23 | ||
24 | #include "FbRun.hh" | 24 | #include "FbRun.hh" |
25 | #include "App.hh" | 25 | #include "App.hh" |
@@ -43,6 +43,7 @@ void showUsage(const char *progname) { | |||
43 | " -h [height] Window height in pixels"<<endl<< | 43 | " -h [height] Window height in pixels"<<endl<< |
44 | " -display [display string] Display name"<<endl<< | 44 | " -display [display string] Display name"<<endl<< |
45 | " -pos [x] [y] Window position in pixels"<<endl<< | 45 | " -pos [x] [y] Window position in pixels"<<endl<< |
46 | " -pos nearmouse Window position near mouse"<<endl<< | ||
46 | " -fg [color name] Foreground text color"<<endl<< | 47 | " -fg [color name] Foreground text color"<<endl<< |
47 | " -bg [color name] Background color"<<endl<< | 48 | " -bg [color name] Background color"<<endl<< |
48 | " -na Disable antialias"<<endl<< | 49 | " -na Disable antialias"<<endl<< |
@@ -56,6 +57,7 @@ int main(int argc, char **argv) { | |||
56 | size_t width = 200, height = 32; // default size of window | 57 | size_t width = 200, height = 32; // default size of window |
57 | bool set_height = false, set_width=false; // use height/width of font by default | 58 | bool set_height = false, set_width=false; // use height/width of font by default |
58 | bool set_pos = false; // set position | 59 | bool set_pos = false; // set position |
60 | bool near_mouse = false; // popup near mouse | ||
59 | bool antialias = true; // antialias text | 61 | bool antialias = true; // antialias text |
60 | string fontname; // font name | 62 | string fontname; // font name |
61 | string title("Run program"); // default title | 63 | string title("Run program"); // default title |
@@ -84,6 +86,10 @@ int main(int argc, char **argv) { | |||
84 | x = atoi(argv[++i]); | 86 | x = atoi(argv[++i]); |
85 | y = atoi(argv[++i]); | 87 | y = atoi(argv[++i]); |
86 | set_pos = true; | 88 | set_pos = true; |
89 | } else if (strcmp(argv[i], "-nearmouse") == 0) { | ||
90 | set_pos = true; | ||
91 | near_mouse = true; | ||
92 | i++; | ||
87 | } else if (strcmp(argv[i], "-fg") == 0 && i+1 < argc) { | 93 | } else if (strcmp(argv[i], "-fg") == 0 && i+1 < argc) { |
88 | foreground = argv[++i]; | 94 | foreground = argv[++i]; |
89 | } else if (strcmp(argv[i], "-bg") == 0 && i+1 < argc) { | 95 | } else if (strcmp(argv[i], "-bg") == 0 && i+1 < argc) { |
@@ -139,7 +145,27 @@ int main(int argc, char **argv) { | |||
139 | fbrun.setTitle(title); | 145 | fbrun.setTitle(title); |
140 | fbrun.setText(text); | 146 | fbrun.setText(text); |
141 | fbrun.show(); | 147 | fbrun.show(); |
142 | 148 | ||
149 | if (near_mouse) { | ||
150 | |||
151 | int wx, wy; | ||
152 | unsigned int mask; | ||
153 | Window ret_win; | ||
154 | Window child_win; | ||
155 | |||
156 | Display* dpy = FbTk::App::instance()->display(); | ||
157 | |||
158 | if (XQueryPointer(dpy, DefaultRootWindow(dpy), | ||
159 | &ret_win, &child_win, | ||
160 | &x, &y, &wx, &wy, &mask)) { | ||
161 | |||
162 | if ( x - (fbrun.width()/2) > 0 ) | ||
163 | x-= fbrun.width()/2; | ||
164 | if ( y - (fbrun.height()/2) > 0 ) | ||
165 | y-= fbrun.height()/2; | ||
166 | } | ||
167 | } | ||
168 | |||
143 | if (set_pos) | 169 | if (set_pos) |
144 | fbrun.move(x, y); | 170 | fbrun.move(x, y); |
145 | 171 | ||