2 * ion/mod_query/input.c
4 * Copyright (c) Tuomo Valkonen 1999-2007.
6 * Ion is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
12 #include <libmainloop/defer.h>
13 #include <ioncore/common.h>
14 #include <ioncore/window.h>
15 #include <ioncore/global.h>
16 #include <ioncore/regbind.h>
17 #include <ioncore/event.h>
18 #include <ioncore/names.h>
26 * Scroll input \var{input} text contents up.
29 void input_scrollup(WInput *input)
31 CALL_DYN(input_scrollup, input, (input));
36 * Scroll input \var{input} text contents down.
39 void input_scrolldown(WInput *input)
41 CALL_DYN(input_scrolldown, input, (input));
45 void input_calc_size(WInput *input, WRectangle *geom)
47 *geom=input->last_fp.g;
49 CALL_DYN(input_calc_size, input, (input, geom));
54 const char *input_style(WInput *input)
56 const char *ret="input";
57 CALL_DYN_RET(ret, const char*, input_style, input, (input));
65 /*{{{ Resize and draw config update */
68 static void input_do_refit(WInput *input, WWindow *par)
71 input_calc_size(input, &g);
72 window_do_fitrep(&input->win, par, &g);
76 void input_refit(WInput *input)
78 input_do_refit(input, NULL);
82 void input_fitrep(WInput *input, WWindow *par, const WFitParams *fp)
85 input_do_refit(input, par);
89 void input_updategr(WInput *input)
93 brush=gr_get_brush(input->win.win,
94 region_rootwin_of((WRegion*)input),
100 if(input->brush!=NULL)
101 grbrush_release(input->brush);
105 region_updategr_default((WRegion*)input);
107 window_draw((WWindow*)input, TRUE);
117 bool input_init(WInput *input, WWindow *par, const WFitParams *fp)
123 if(!window_init((WWindow*)input, par, fp))
128 input->brush=gr_get_brush(win, region_rootwin_of((WRegion*)par),
131 if(input->brush==NULL)
135 window_select_input(&(input->win), IONCORE_EVENTMASK_NORMAL);
137 region_add_bindmap((WRegion*)input, mod_query_input_bindmap);
139 region_register((WRegion*)input);
144 window_deinit((WWindow*)input);
149 void input_deinit(WInput *input)
151 if(input->brush!=NULL)
152 grbrush_release(input->brush);
154 window_deinit((WWindow*)input);
159 * Close input not calling any possible finish handlers.
162 void input_cancel(WInput *input)
164 if(region_manager_allows_destroying((WRegion*)input))
165 region_dispose_((WRegion*)input);
175 static void input_inactivated(WInput *input)
177 window_draw((WWindow*)input, FALSE);
181 static void input_activated(WInput *input)
183 window_draw((WWindow*)input, FALSE);
190 /*{{{ Dynamic function table and class implementation */
193 static DynFunTab input_dynfuntab[]={
194 {(DynFun*)region_fitrep, (DynFun*)input_fitrep},
195 {region_updategr, input_updategr},
196 {region_activated, input_activated},
197 {region_inactivated, input_inactivated},
203 IMPLCLASS(WInput, WWindow, input_deinit, input_dynfuntab);