mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-19 04:00:19 +00:00
Use native emoji picker on Windows
This commit is contained in:
@@ -461,6 +461,8 @@ static void mg_create_entry (session *sess, GtkWidget *box);
|
|||||||
static void mg_create_search (session *sess, GtkWidget *box);
|
static void mg_create_search (session *sess, GtkWidget *box);
|
||||||
#ifdef G_OS_WIN32
|
#ifdef G_OS_WIN32
|
||||||
static GdkFilterReturn mg_win32_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data);
|
static GdkFilterReturn mg_win32_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data);
|
||||||
|
static void mg_show_win32_emoji_panel (void);
|
||||||
|
static void mg_inputbox_icon_press (GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data);
|
||||||
#endif
|
#endif
|
||||||
static void mg_link_irctab (session *sess, int focus);
|
static void mg_link_irctab (session *sess, int focus);
|
||||||
|
|
||||||
@@ -4028,6 +4030,9 @@ mg_create_entry (session *sess, GtkWidget *box)
|
|||||||
mg_apply_entry_style (entry);
|
mg_apply_entry_style (entry);
|
||||||
|
|
||||||
g_object_set (G_OBJECT (entry), "show-emoji-icon", TRUE, NULL);
|
g_object_set (G_OBJECT (entry), "show-emoji-icon", TRUE, NULL);
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
g_signal_connect (G_OBJECT (entry), "icon-press", G_CALLBACK (mg_inputbox_icon_press), NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (gtk_entry_get_icon_storage_type (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY) == GTK_IMAGE_EMPTY)
|
if (gtk_entry_get_icon_storage_type (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY) == GTK_IMAGE_EMPTY)
|
||||||
{
|
{
|
||||||
@@ -4037,6 +4042,42 @@ mg_create_entry (session *sess, GtkWidget *box)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
static void
|
||||||
|
mg_show_win32_emoji_panel (void)
|
||||||
|
{
|
||||||
|
INPUT input[4];
|
||||||
|
|
||||||
|
ZeroMemory (input, sizeof (input));
|
||||||
|
|
||||||
|
input[0].type = INPUT_KEYBOARD;
|
||||||
|
input[0].ki.wVk = VK_LWIN;
|
||||||
|
input[1].type = INPUT_KEYBOARD;
|
||||||
|
input[1].ki.wVk = VK_OEM_PERIOD;
|
||||||
|
input[2].type = INPUT_KEYBOARD;
|
||||||
|
input[2].ki.wVk = VK_OEM_PERIOD;
|
||||||
|
input[2].ki.dwFlags = KEYEVENTF_KEYUP;
|
||||||
|
input[3].type = INPUT_KEYBOARD;
|
||||||
|
input[3].ki.wVk = VK_LWIN;
|
||||||
|
input[3].ki.dwFlags = KEYEVENTF_KEYUP;
|
||||||
|
|
||||||
|
SendInput ((UINT) G_N_ELEMENTS (input), input, sizeof (INPUT));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mg_inputbox_icon_press (GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data)
|
||||||
|
{
|
||||||
|
(void) event;
|
||||||
|
(void) user_data;
|
||||||
|
|
||||||
|
if (icon_pos != GTK_ENTRY_ICON_SECONDARY)
|
||||||
|
return;
|
||||||
|
|
||||||
|
g_signal_stop_emission_by_name (entry, "icon-press");
|
||||||
|
mg_show_win32_emoji_panel ();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mg_switch_tab_cb (chanview *cv, chan *ch, int tag, gpointer ud)
|
mg_switch_tab_cb (chanview *cv, chan *ch, int tag, gpointer ud)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user