Example #1
0
static int focus_get_focus_status(struct _focus *p, int *forced_mode, int *focus_status, int *autocompletion_mode)
{
	int focus = get_focus(p, forced_mode, focus_status, autocompletion_mode);
	
	p->last_focus = *focus_status;
	if (!xconfig->tracking_input)
		p->last_focus = FOCUS_EXCLUDED;
	
	return focus;
}
Example #2
0
int xfocus_get_focus_status(struct _xfocus *p, int *forced_mode, int *focus_status)
{
	int focus = get_focus(p, forced_mode, focus_status);

	if (focus == FOCUS_UNCHANGED)
		return p->last_focus;

	if (focus == FOCUS_CHANGED)
		p->last_focus = FOCUS_UNCHANGED;
	else
		p->last_focus = focus;

	return focus;
}
Example #3
0
	//-----------------------------------------------------------------//
	void widget_progress::update()
	{
#if 0
		const slider_param& sp = param_.slider_param_;
		short fw = param_.plate_param_.frame_width_;
		if(sp.direction_ == slider_param::direction::HOLIZONTAL) {
			handle_offset_.x = param_.plate_param_.frame_width_;
			short ofs = wd_.at_mobj().get_size(hand_h_).y - wd_.at_mobj().get_size(base_h_).y;
			handle_offset_.y = -ofs / 2;
		} else if(sp.direction_ == slider_param::direction::VERTICAL) {
			short ofs = wd_.at_mobj().get_size(hand_h_).x - wd_.at_mobj().get_size(base_h_).x;
			handle_offset_.x = -ofs / 2;
			handle_offset_.y = param_.plate_param_.frame_width_;
		}

		if(get_focus() && param_.hand_ctrl_) {
			if(get_select()) {
				if(get_select_in()) {
					ref_position_ = sp.position_;
					ref_point_ = get_param().in_point_;
				}
				const vtx::spos size = get_rect().size;
				float ratio = 0.0f;
				vtx::spos ref = get_param().in_point_ - ref_point_;
				if(sp.direction_ == slider_param::direction::HOLIZONTAL) {
					short sz = size.x - fw * 2;
					short ofs;
					if(param_.hand_image_) {
						ofs = wd_.at_mobj().get_size(hand_h_).x;
					} else {
						ofs = sz * sp.handle_ratio_;
					}
					ratio = static_cast<float>(ref.x) / static_cast<float>(sz - ofs);
				} else if(sp.direction_ == slider_param::direction::VERTICAL) {
					short sz = size.y - fw * 2;
					short ofs;
					if(param_.hand_image_) {
						ofs = wd_.at_mobj().get_size(hand_h_).y;
					} else {
						ofs = sz * sp.handle_ratio_;
					}
					ratio = static_cast<float>(ref.y) / static_cast<float>(sz - ofs);
				}
				ratio += ref_position_;
				if(ratio < 0.0f) ratio = 0.0f;
				else if(ratio > 1.0f) ratio = 1.0f;
				if(sp.grid_ > 0.0f) {
					short step = ratio / (sp.grid_ * 0.5f);
					ratio = ((step + 1) / 2) * sp.grid_;
				}
				param_.slider_param_.position_ = ratio;
			} else if(param_.scroll_ctrl_) {
				const vtx::spos& scr = wd_.get_scroll();
				float ratio = param_.slider_param_.position_;
				if(scr.y != 0) {
					if(sp.direction_ == slider_param::direction::HOLIZONTAL) {
						ratio += static_cast<float>(scr.y) * -param_.scroll_gain_;
					} else if(sp.direction_ == slider_param::direction::VERTICAL) {
						ratio += static_cast<float>(scr.y) *  param_.scroll_gain_;
					}
					if(ratio < 0.0f) ratio = 0.0f;
					else if(ratio > 1.0f) ratio = 1.0f;
					if(sp.grid_ > 0.0f) {
						short step = ratio / (sp.grid_ * 0.5f);
						ratio = ((step + 1) / 2) * sp.grid_;
					}
					param_.slider_param_.position_ = ratio;
				}
			}
		}

		const vtx::spos& size = get_rect().size;
		if(sp.direction_ == slider_param::direction::HOLIZONTAL) {
			short sz = size.x - fw * 2;
			short ofs;
			if(param_.hand_image_) {
				ofs = wd_.at_mobj().get_size(hand_h_).x;
			} else {
				ofs = sz * sp.handle_ratio_;
			}
			handle_offset_.x = fw + sp.position_ * (sz - ofs);
		} else if(sp.direction_ == slider_param::direction::VERTICAL) {
			short sz = size.y - fw * 2;
			short ofs;
			if(param_.hand_image_) {
				ofs = wd_.at_mobj().get_size(hand_h_).y;
			} else {
				ofs = sz * sp.handle_ratio_;
			}
			handle_offset_.y = fw + sp.position_ * (sz - ofs);
		}
#endif
	}