亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cellwidget.c

?? 添加系統(tǒng)調(diào)用。。。在LINUX下添加一個(gè)新的系統(tǒng)調(diào)用。在文件中添加自己的系統(tǒng)調(diào)用的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
        rows = cell_rows;        if (i == cell_cols && cell_rows > 1 &&            !cells[(cell_rows - 1) * cell_cols - 1].ch)                rows--;        cells[cell_rows * cell_cols - 1].ch = 0;        cells[cell_rows * cell_cols - 1].alts[0] = NULL;        pack_cells(0, cell_cols);        cell_widget_render();}static void send_cell_key(int cell)/* Send the key event for the cell */{        int i;        if (!cells[cell].ch)                return;        /* Collect stats and train on corrections */        if (cells[cell].ch != ' ') {                if (cells[cell].ch != cells[cell].sample.ch)                        corrections++;                if (train_on_input && !(cells[cell].flags & CELL_SHIFTED) &&                    cells[cell].sample.len) {                        cells[cell].sample.ch = cells[cell].ch;                        train_sample(&cells[cell].sample, FALSE);                }                characters++;        }        /* Update the usage time for the sample that matched this character */        for (i = 0; i < ALTERNATES && cells[cell].alts[i]; i++) {                if (!sample_valid(cells[cell].alts[i], cells[cell].alt_used[i]))                        break;                if (cells[cell].alts[i]->ch == cells[cell].ch) {                        promote_sample(cells[cell].alts[i]);                        break;                }                demote_sample(cells[cell].alts[i]);        }        key_event_send_char(cells[cell].ch);}/*        Events*//* Hold click area radius */#define HOLD_CLICK_WIDTH 3./* Mask for possible buttons used by the eraser */#define ERASER_BUTTON_MASK (GDK_MOD5_MASK | GDK_BUTTON1_MASK | \                            GDK_BUTTON2_MASK | GDK_BUTTON3_MASK | \                            GDK_BUTTON4_MASK | GDK_BUTTON5_MASK)static int menu_cell, alt_menu_alts[ALTERNATES];static void training_menu_reset(void){        untrain_char(cells[menu_cell].ch);        render_cell(menu_cell);}static void alt_menu_selection_done(GtkWidget *widget){        gtk_widget_destroy(widget);}static void alt_menu_activate(GtkWidget *widget, int *alt){        cells[menu_cell].ch = *alt;        cells[menu_cell].flags |= CELL_VERIFIED;        cells[menu_cell].flags &= ~CELL_SHIFTED;        render_cell(menu_cell);}static void alt_menu_delete(void){        delete_cell(menu_cell);}static void alt_menu_show_ink(void){        cells[menu_cell].flags ^= CELL_SHOW_INK;        render_cell(menu_cell);}static void alt_menu_change_case(void){        if (g_unichar_isupper(cells[menu_cell].ch)) {                cells[menu_cell].ch = g_unichar_tolower(cells[menu_cell].ch);                cells[menu_cell].flags |= CELL_SHIFTED;                render_cell(menu_cell);        } else if (g_unichar_islower(cells[menu_cell].ch)) {                cells[menu_cell].ch = g_unichar_toupper(cells[menu_cell].ch);                cells[menu_cell].flags |= CELL_SHIFTED;                render_cell(menu_cell);        } else                g_debug("Cannot change case, not an alphabetic character");}static gboolean scrollbar_scroll_event(GtkWidget *widget, GdkEventScroll *event){        check_cell(event->x, event->y, event->device);        return FALSE;}static gboolean scroll_event(GtkWidget *widget, GdkEventScroll *event){        if (scrollbar && GTK_WIDGET_VISIBLE(scrollbar))                gtk_widget_event(scrollbar, (GdkEvent*)event);        return FALSE;}static void context_menu_position(GtkMenu *menu, gint *x, gint *y,                                  gboolean *push_in)/* Positions the two-column context menu so that the column divide is at   the cursor rather than the upper left hand point */{        if (cells[menu_cell].alts[0])                *x -= GTK_WIDGET(menu)->requisition.width / 2;        *push_in = TRUE;}static void show_context_menu(int button, int time)/* Popup the cell context menu for the current cell */{        GtkWidget *menu, *widget;        int i, pos;        /* Training menu is the same for all cells */        if (training) {                if (!char_trained(cells[current_cell].ch))                        return;                menu_cell = current_cell;                gtk_menu_popup(GTK_MENU(training_menu), 0, 0, 0, 0,                               button, time);                return;        }        /* Can't delete blanks */        if (!cells[current_cell].ch)                return;        /* Construct an alternates menu for the current button */        menu = gtk_menu_new();        menu_cell = current_cell;        /* Menu -> Delete */        widget = gtk_menu_item_new_with_label("Delete");        g_signal_connect(G_OBJECT(widget), "activate",                         G_CALLBACK(alt_menu_delete), NULL);        gtk_menu_attach(GTK_MENU(menu), widget, 0, 1, 0, 1);        /* Menu -> Show Ink */        if (cells[menu_cell].sample.ch) {                const char *label;                label = cells[menu_cell].flags & CELL_SHOW_INK ?                        "Hide ink" : "Show ink";                widget = gtk_menu_item_new_with_label(label);                g_signal_connect(G_OBJECT(widget), "activate",                                 G_CALLBACK(alt_menu_show_ink), NULL);                gtk_menu_attach(GTK_MENU(menu), widget, 0, 1, 1, 2);        }        /* Menu -> Change case */        if (g_unichar_isupper(cells[menu_cell].ch) ||                g_unichar_islower(cells[menu_cell].ch)) {                const char *string = "To upper";                if (g_unichar_isupper(cells[menu_cell].ch))                        string = "To lower";                widget = gtk_menu_item_new_with_label(string);                g_signal_connect(G_OBJECT(widget), "activate",                                 G_CALLBACK(alt_menu_change_case), NULL);                gtk_menu_attach(GTK_MENU(menu), widget, 0, 1, 2, 3);        }        /* Menu -> Alternates */        for (i = 0, pos = 0; i < ALTERNATES &&                cells[current_cell].alts[i]; i++) {                char *str;                if (!sample_valid(cells[current_cell].alts[i],                                  cells[current_cell].alt_used[i]))                        continue;                str = va("%C\t%d%%", cells[current_cell].alts[i]->ch,                         cells[current_cell].alt_ratings[i]);                alt_menu_alts[i] = cells[current_cell].alts[i]->ch;                widget = gtk_check_menu_item_new_with_label(str);                if (cells[current_cell].ch == cells[current_cell].alts[i]->ch)                        gtk_check_menu_item_set_active(                                             GTK_CHECK_MENU_ITEM(widget), TRUE);                g_signal_connect(G_OBJECT(widget), "activate",                                 G_CALLBACK(alt_menu_activate),                                 alt_menu_alts + i);                gtk_menu_attach(GTK_MENU(menu), widget, 1, 2, pos, pos + 1);                pos++;        }        g_signal_connect(G_OBJECT(menu), "selection-done",                         G_CALLBACK(alt_menu_selection_done), NULL);        gtk_widget_show_all(menu);        gtk_menu_popup(GTK_MENU(menu), 0, 0,                       (GtkMenuPositionFunc)context_menu_position,                       0, button, time);}static gboolean button_press_event(GtkWidget *widget, GdkEventButton *event)/* Mouse button is pressed over drawing area */{        /* Pass on event to the on-screen keyboard */        if (show_keys && key_widget_button_press(widget, event, key_widget))                return TRUE;        /* Don't process double clicks */        if (event->type != GDK_BUTTON_PRESS)                return TRUE;        /* Check validity every time */        check_cell(event->x, event->y, event->device);        if (invalid)                return TRUE;        /* If we are drawing and we get a button press event it is possible           that we never received a button release event for some reason.           This is a fix for Zaurus drawing connected lines. */        if (drawing)                stop_drawing();        /* If we have pressed with the eraser, erase the cell */        if (eraser || event->button == 2) {                erase_cell(current_cell);                return TRUE;        }        /* Draw/activate insert with left click */        if (event->button == 1) {                if (inserting)                        potential_insert = TRUE;                else if (cells[current_cell].ch) {                        start_hold();                } else                        draw(event->x, event->y);                /* We are now counting on getting valid coordinates here so                   save in case we are doing a potential insert/hold and we                   don't get a motion event in between */                cursor_x = event->x;                cursor_y = event->y;                return TRUE;        }        /* Right-click opens context menu */        else if (event->button == 3 && current_cell >= 0 && !inserting &&                 (!input || !input->len)) {                show_context_menu(event->button, event->time);                return TRUE;        }        return FALSE;}static gboolean button_release_event(GtkWidget *widget, GdkEventButton *event)/* Mouse button is released over drawing area */{        /* Pass on event to the on-screen keyboard */        if (show_keys && key_widget_button_release(widget, event, key_widget))                return TRUE;        /* Only handle left-clicks */        if (event->button != 1)                return TRUE;        /* Complete an insertion */        if (potential_insert && inserting) {                insert_cell(current_cell);                potential_insert = FALSE;                return TRUE;        }        /* Cancel a hold-click */        if (potential_hold) {                potential_hold = FALSE;                draw(cursor_x, cursor_y);        }        stop_drawing();        return TRUE;}static gboolean motion_notify_event(GtkWidget *widget, GdkEventMotion *event)/* Mouse is moved over drawing area */{        GdkModifierType state;        double x, y;        /* Fetch event coordinates */        x = event->x;        y = event->y;        if (xinput_enabled) {                gdk_device_get_state(event->device, event->window, NULL,                                     &state);                gdk_event_get_coords((GdkEvent*)event, &x, &y);        }#if GTK_CHECK_VERSION(2, 12, 0)        /* Process a hint event (GTK >= 2.12) */        gdk_event_request_motions(event);#else        /* Process a hint event (GTK <= 2.10) */        else if (event->is_hint) {                int nx, ny;                gdk_window_get_pointer(event->window, &nx, &ny, &state);                x = nx;                y = ny;        }#endif        /* If we are getting invalid output from this device with XInput           enabled, try disabling it */        if ((x < 0 || x > drawing_area->allocation.width ||             y < 0 || y > drawing_area->allocation.width) &&            event->device->mode != GDK_MODE_DISABLED && xinput_enabled) {                g_warning("Extended input device is generating invalid "                          "coordinates, disabled");                gdk_device_set_mode(event->device, GDK_MODE_DISABLED);                return TRUE;        }        /* Check where the pointer is */        check_cell(x, y, event->device);        /* Cancel a potential insert */        if (potential_insert) {                if (!inserting) {                        potential_insert = FALSE;                        draw(cursor_x, cursor_y);                } else                        return TRUE;        }        /* Cancel a potential hold-click */        if (potential_hold) {                double dx, dy;                dx = x - cursor_x;                dy = y - cursor_y;                if (dx < -HOLD_CLICK_WIDTH || dx > HOLD_CLICK_WIDTH ||                    dy < -HOLD_CLICK_WIDTH || dy > HOLD_CLICK_WIDTH) {                        potential_hold = FALSE;                        draw(cursor_x, cursor_y);                } else                        return TRUE;        }        cursor_x = x;        cursor_y = y;        /* Record and draw new segment */        if (drawing) {                draw(cursor_x, cursor_y);                render_segment(input, current_cell, input->len - 1,                               input->strokes[input->len - 1]->len - 2, NULL);        }        /* Erasing with the eraser. We get MOD5 rather than a button for the           eraser being pressed on a Tablet PC. */        else if (!invalid &&                 (cross_out || (eraser && (state & ERASER_BUTTON_MASK))))                erase_cell(current_cell);        /* Plain motion restarts the finish countdown */        start_timeout();        return TRUE;}static void configure_keys(void)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美久久久久久久久久| 欧美日韩一区二区三区不卡| 亚洲最大的成人av| 精品88久久久久88久久久| 欧美日韩综合在线| 粗大黑人巨茎大战欧美成人| 日本va欧美va精品发布| 一区二区三区精品在线| 国产亚洲综合色| 日韩亚洲欧美在线| 欧美日韩国产欧美日美国产精品| 高清在线观看日韩| 麻豆91在线播放免费| 亚洲午夜精品一区二区三区他趣| 国产精品日韩成人| 久久久久久久久久久黄色| 日韩欧美视频在线| 这里只有精品免费| 欧美日韩一本到| 在线免费观看视频一区| 99久久精品国产导航| 国产91富婆露脸刺激对白| 久久成人免费电影| 久久精品国产**网站演员| 天堂蜜桃91精品| 亚洲一区在线播放| 玉足女爽爽91| 亚洲综合区在线| 亚洲一区二区三区小说| 夜夜嗨av一区二区三区| 一区二区三区四区视频精品免费| 亚洲情趣在线观看| 亚洲婷婷综合久久一本伊一区| 国产日韩精品一区| 国产精品嫩草影院com| 欧美极品少妇xxxxⅹ高跟鞋 | 久久99精品国产91久久来源| 日本成人中文字幕在线视频| 五月婷婷久久丁香| 婷婷一区二区三区| 日本欧美韩国一区三区| 久久成人免费网站| 国产精品羞羞答答xxdd| 国产jizzjizz一区二区| 成人动漫视频在线| 色婷婷精品大视频在线蜜桃视频| 一本久久综合亚洲鲁鲁五月天 | 国产成人精品三级| 丁香婷婷综合网| 成人白浆超碰人人人人| 91玉足脚交白嫩脚丫在线播放| 99热国产精品| 在线精品亚洲一区二区不卡| 在线成人免费视频| 久久午夜色播影院免费高清| 国产精品乱码一区二区三区软件| 亚洲欧洲美洲综合色网| 亚洲综合在线免费观看| 日韩在线卡一卡二| 激情文学综合丁香| 成人午夜私人影院| 91国内精品野花午夜精品| 91精品在线观看入口| 2021中文字幕一区亚洲| 亚洲欧洲精品成人久久奇米网| 一区二区三区四区亚洲| 午夜免费久久看| 国产一区二区三区四区五区入口 | 免费欧美高清视频| 成人黄色av电影| 欧美伊人久久大香线蕉综合69 | 亚洲欧洲色图综合| 亚洲成av人片在线| 国产乱理伦片在线观看夜一区| 99精品桃花视频在线观看| 欧美午夜电影一区| 久久亚洲精品国产精品紫薇| 成人免费一区二区三区在线观看| 五月婷婷激情综合| 成人一区在线看| 欧美日韩激情一区二区三区| 久久精品欧美日韩精品| 亚洲高清视频的网址| 国产不卡免费视频| 欧美日韩一区二区三区在线 | 国产欧美一区二区精品忘忧草| 亚洲永久免费视频| 岛国av在线一区| 欧美日韩小视频| 中文字幕欧美日韩一区| 亚洲成人av一区二区| 成人免费观看视频| 欧美一级久久久久久久大片| 亚洲天堂av老司机| 激情文学综合网| 欧美日韩激情在线| 日韩毛片视频在线看| 狠狠色狠狠色合久久伊人| 91福利视频久久久久| 国产婷婷一区二区| 久久99国产精品久久99| 色哦色哦哦色天天综合| 国产农村妇女精品| 九色综合狠狠综合久久| 欧美精品 国产精品| 自拍偷拍国产精品| 成人国产精品免费| 精品乱人伦小说| 三级不卡在线观看| 91国模大尺度私拍在线视频| 国产精品国产三级国产aⅴ入口 | 精品国产髙清在线看国产毛片| 亚洲女同一区二区| www.久久久久久久久| 久久精品亚洲国产奇米99| 老司机精品视频在线| 8v天堂国产在线一区二区| 亚洲制服丝袜av| 色拍拍在线精品视频8848| 亚洲天堂精品在线观看| 福利电影一区二区三区| 久久日韩精品一区二区五区| 免费在线观看视频一区| 欧美电影一区二区| 性做久久久久久久免费看| 欧美午夜一区二区| 亚洲动漫第一页| 在线观看欧美黄色| 一区二区三区小说| 欧美亚洲综合网| 一区二区免费在线播放| 在线观看不卡视频| 亚洲国产日韩a在线播放| 日本高清成人免费播放| 亚洲欧美成人一区二区三区| 91女人视频在线观看| 亚洲人被黑人高潮完整版| 一本一道久久a久久精品 | 亚洲一区二区三区中文字幕| 色999日韩国产欧美一区二区| 有坂深雪av一区二区精品| 色综合久久久久久久久久久| 亚洲综合免费观看高清完整版| 欧美色中文字幕| 天天色 色综合| 日韩一区二区免费在线观看| 久久国产精品露脸对白| wwwwww.欧美系列| 成人污污视频在线观看| 亚洲摸摸操操av| 欧美区一区二区三区| 久久成人免费网| 国产精品久久网站| 欧美亚洲自拍偷拍| 日韩和欧美一区二区三区| 欧美r级电影在线观看| 国产精品一二三在| 亚洲色图欧美在线| 欧美日韩不卡一区二区| 久久66热偷产精品| 国产精品毛片无遮挡高清| 91高清视频免费看| 美女在线视频一区| 国产精品久久久久久久久久久免费看| 91色在线porny| 人人精品人人爱| 欧美国产97人人爽人人喊| 99re这里只有精品视频首页| 爽爽淫人综合网网站| 久久综合九色综合97婷婷| 91原创在线视频| 免费成人av在线播放| 国产精品久久久久毛片软件| 欧美视频在线播放| 国产精品一区二区三区四区| 亚洲综合丁香婷婷六月香| 精品欧美一区二区三区精品久久| av一区二区三区黑人| 全部av―极品视觉盛宴亚洲| 国产精品久久久久久久久快鸭| 美国毛片一区二区| 亚洲一区二区三区激情| 日韩欧美国产麻豆| 成人免费高清在线观看| 石原莉奈在线亚洲二区| 国产精品欧美一级免费| 欧美一区二区三区电影| 91麻豆国产自产在线观看| 久久精品国产免费| 亚洲小说欧美激情另类| 国产亚洲女人久久久久毛片| 在线成人av网站| 91麻豆自制传媒国产之光| 国产在线一区二区综合免费视频| 亚洲国产一区在线观看| 欧美韩国日本综合| 日韩精品一区二区三区蜜臀| 欧美午夜一区二区三区免费大片| 成人中文字幕电影| 久久国产精品露脸对白|