[gnome-flashback/wip/segeiger/gnome-3-18-inputmethods: 1/2] input-sources: add candidate popup widgets
- From: Sebastian Geiger <segeiger src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback/wip/segeiger/gnome-3-18-inputmethods: 1/2] input-sources: add candidate popup widgets
- Date: Mon, 18 Jan 2016 14:42:24 +0000 (UTC)
commit 14b7a303099c32f3a45cb670ca087337a6010be3
Author: Sebastian Geiger <sbastig gmx net>
Date: Sun Jan 17 23:57:32 2016 +0100
input-sources: add candidate popup widgets
.../libinput-sources/gf-candidate-popup.c | 60 ++++++++++++++++++++
1 files changed, 60 insertions(+), 0 deletions(-)
---
diff --git a/gnome-flashback/libinput-sources/gf-candidate-popup.c
b/gnome-flashback/libinput-sources/gf-candidate-popup.c
index f10c8c4..837010c 100644
--- a/gnome-flashback/libinput-sources/gf-candidate-popup.c
+++ b/gnome-flashback/libinput-sources/gf-candidate-popup.c
@@ -17,6 +17,7 @@
#include "config.h"
+#include "gf-candidate-area.h"
#include "gf-candidate-popup.h"
struct _GfCandidatePopup
@@ -24,6 +25,10 @@ struct _GfCandidatePopup
GfPopupWindow parent;
IBusPanelService *service;
+
+ GtkWidget *pre_edit_text;
+ GtkWidget *aux_text;
+ GtkWidget *candidate_area;
};
G_DEFINE_TYPE (GfCandidatePopup, gf_candidate_popup, GF_TYPE_POPUP_WINDOW)
@@ -107,6 +112,38 @@ focus_out_cb (IBusPanelService *service,
}
static void
+area_page_prev_cb (GfCandidateArea *area,
+ GfCandidatePopup *popup)
+{
+ ibus_panel_service_page_up (popup->service);
+}
+
+static void
+area_page_next_cb (GfCandidateArea *area,
+ GfCandidatePopup *popup)
+{
+ ibus_panel_service_page_down (popup->service);
+}
+
+static void
+area_candidate_clicked_cb (GfCandidateArea *area,
+ guint index,
+ GdkEvent *event,
+ GfCandidatePopup *popup)
+{
+ guint button;
+ GdkModifierType state;
+
+ gdk_event_get_button (event, &button);
+ gdk_event_get_state (event, &state);
+
+ ibus_panel_service_candidate_clicked (popup->service,
+ index,
+ button,
+ state);
+}
+
+static void
gf_candidate_popup_dispose (GObject *object)
{
GfCandidatePopup *popup;
@@ -132,11 +169,34 @@ static void
gf_candidate_popup_init (GfCandidatePopup *popup)
{
GtkWindow *window;
+ GtkWidget *box_layout;
window = GTK_WINDOW (popup);
gtk_window_set_focus_on_map (window, TRUE);
gtk_window_set_type_hint (window, GDK_WINDOW_TYPE_HINT_NORMAL);
+
+ popup->candidate_area = gf_candidate_area_new();
+
+ box_layout = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add (GTK_CONTAINER (popup), box_layout);
+
+ popup->pre_edit_text = gtk_label_new (NULL);
+ popup->aux_text = gtk_label_new (NULL);
+
+ gtk_container_add (GTK_CONTAINER (box_layout), popup->pre_edit_text);
+ gtk_container_add (GTK_CONTAINER (box_layout), popup->aux_text);
+ gtk_container_add (GTK_CONTAINER (box_layout), popup->candidate_area);
+
+ gtk_widget_show (box_layout);
+ gtk_widget_show (popup->candidate_area);
+
+ g_signal_connect (popup->candidate_area, "previous-page",
+ G_CALLBACK (area_page_prev_cb), popup);
+ g_signal_connect (popup->candidate_area, "next-page",
+ G_CALLBACK (area_page_next_cb), popup);
+ g_signal_connect (popup->candidate_area, "candidate-clicked",
+ G_CALLBACK (area_candidate_clicked_cb), popup);
}
GfCandidatePopup *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]