rendering: Remove unneeded redraw after button release
This commit is contained in:
@ -61,10 +61,6 @@ typedef struct _EekGtkKeyboardPrivate
|
|||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (EekGtkKeyboard, eek_gtk_keyboard, GTK_TYPE_DRAWING_AREA)
|
G_DEFINE_TYPE_WITH_PRIVATE (EekGtkKeyboard, eek_gtk_keyboard, GTK_TYPE_DRAWING_AREA)
|
||||||
|
|
||||||
static void render_pressed_button (GtkWidget *widget, struct button_place *place);
|
|
||||||
static void render_released_button (GtkWidget *widget,
|
|
||||||
const struct squeek_button *button);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eek_gtk_keyboard_real_realize (GtkWidget *self)
|
eek_gtk_keyboard_real_realize (GtkWidget *self)
|
||||||
{
|
{
|
||||||
@ -341,47 +337,3 @@ eek_gtk_render_locked_button (EekGtkKeyboard *self, struct button_place place)
|
|||||||
cairo_region_destroy (region);
|
cairo_region_destroy (region);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: does it really redraw the entire keyboard?
|
|
||||||
static void
|
|
||||||
render_released_button (GtkWidget *widget,
|
|
||||||
const struct squeek_button *button)
|
|
||||||
{
|
|
||||||
(void)button;
|
|
||||||
EekGtkKeyboard *self = EEK_GTK_KEYBOARD (widget);
|
|
||||||
EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
|
|
||||||
|
|
||||||
GdkWindow *window = gtk_widget_get_window (widget);
|
|
||||||
cairo_region_t *region = gdk_window_get_clip_region (window);
|
|
||||||
GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
|
|
||||||
cairo_t *cr = gdk_drawing_context_get_cairo_context (context);
|
|
||||||
|
|
||||||
eek_renderer_render_keyboard (priv->renderer, cr);
|
|
||||||
|
|
||||||
gdk_window_end_draw_frame (window, context);
|
|
||||||
|
|
||||||
cairo_region_destroy (region);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
eek_gtk_on_button_released (const struct squeek_button *button,
|
|
||||||
struct squeek_view *view,
|
|
||||||
EekGtkKeyboard *self)
|
|
||||||
{
|
|
||||||
(void)view;
|
|
||||||
EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
|
|
||||||
|
|
||||||
/* renderer may have not been set yet if the widget is a popup */
|
|
||||||
if (!priv->renderer)
|
|
||||||
return;
|
|
||||||
|
|
||||||
render_released_button (GTK_WIDGET(self), button);
|
|
||||||
gtk_widget_queue_draw (GTK_WIDGET(self));
|
|
||||||
|
|
||||||
#if HAVE_LIBCANBERRA
|
|
||||||
ca_gtk_play_for_widget (widget, 0,
|
|
||||||
CA_PROP_EVENT_ID, "button-released",
|
|
||||||
CA_PROP_EVENT_DESCRIPTION, "virtual key pressed",
|
|
||||||
CA_PROP_APPLICATION_ID, "org.fedorahosted.Eekboard",
|
|
||||||
NULL);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|||||||
@ -308,16 +308,6 @@ pub mod c {
|
|||||||
origin: Point,
|
origin: Point,
|
||||||
angle: i32
|
angle: i32
|
||||||
) -> u32;
|
) -> u32;
|
||||||
|
|
||||||
// Button and View are safe to pass to C
|
|
||||||
// as long as they don't outlive the call
|
|
||||||
// and nothing dereferences them
|
|
||||||
#[allow(improper_ctypes)]
|
|
||||||
pub fn eek_gtk_on_button_released(
|
|
||||||
button: *const Button,
|
|
||||||
view: *const View,
|
|
||||||
keyboard: EekGtkKeyboard,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Places each button in order, starting from 0 on the left,
|
/// Places each button in order, starting from 0 on the left,
|
||||||
@ -905,24 +895,6 @@ mod procedures {
|
|||||||
}) == 1
|
}) == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Switch off all UI buttons associated with the (state) key
|
|
||||||
pub fn release_ui_buttons(
|
|
||||||
view: &Box<View>,
|
|
||||||
key: &Rc<RefCell<KeyState>>,
|
|
||||||
ui_keyboard: c::EekGtkKeyboard,
|
|
||||||
) {
|
|
||||||
let paths = ::layout::procedures::find_key_paths(&view, key);
|
|
||||||
for (_row, button) in paths {
|
|
||||||
unsafe {
|
|
||||||
c::procedures::eek_gtk_on_button_released(
|
|
||||||
button.as_ref() as *const Button,
|
|
||||||
view.as_ref() as *const View,
|
|
||||||
ui_keyboard,
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
@ -1036,9 +1008,6 @@ mod seat {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: move one level up; multiple buttons might have been released
|
|
||||||
procedures::release_ui_buttons(view, key, ui_keyboard);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user