LRESULT editorctl_on_size (EDITORCTL *editorctl, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (editorctl->editor.layout.wrap > 0) { int new_wrap; RECT r; if (!GetClientRect (editorctl->hwnd, &r)) goto error; new_wrap = (r.right - r.left - editorctl->cell_size.cx - 1) / editorctl->cell_size.cx; if (new_wrap < 20) new_wrap = 20; if (editorctl->editor.layout.wrap != new_wrap) { if (!layout_destroy (&editorctl->editor.layout)) goto error; if (!layout_initialize (&editorctl->editor.layout, editorctl->heap, &editorctl->editor.text, 8, new_wrap, new_wrap - 10)) goto error; if (!editorctl_update_caret (editorctl, TRUE)) goto error; if (!InvalidateRect (editorctl->hwnd, &r, FALSE)) goto error; } } if (!editorctl_update_scroll_range (editorctl)) goto error; return 0; error: return -1; }
HAPI Evas_Object *layout_create(Evas_Object *conformant, const char *file, const char *group, int rotate) { Evas_Object *layout; do { int width; int height; layout = layout_load_edj(conformant, file, group); retv_if(NULL == layout, NULL); width = menu_screen_get_root_width(); height = menu_screen_get_root_height() - INDEX_HEIGHT; evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_min_set(layout, width, height); evas_object_size_hint_max_set(layout, width, height); evas_object_resize(layout, width, height); evas_object_show(layout); evas_object_data_set(layout, "win", menu_screen_get_win()); evas_object_data_set(layout, "rotate", (void *) rotate); evas_object_data_set(layout, "width", (void *) width); evas_object_data_set(layout, "height", (void *) height); } while (0); do { Evas_Object *all_apps; all_apps = all_apps_layout_create(layout, rotate); if (NULL == all_apps) { _E("Failed to create scroller"); layout_destroy(layout); return NULL; } evas_object_data_set(layout, "all_apps", all_apps); elm_object_part_content_set(layout, "content", all_apps); } while (0); return layout; }
void cleanup() { inputs_destroy(); clientlist_destroy(); layout_destroy(); systray_destroy(); }
void kbd_push_event(kbd_dev_t *kdev, int type, unsigned int key) { kbd_event_t ev; unsigned int mod_mask; switch (key) { case KC_LCTRL: mod_mask = KM_LCTRL; break; case KC_RCTRL: mod_mask = KM_RCTRL; break; case KC_LSHIFT: mod_mask = KM_LSHIFT; break; case KC_RSHIFT: mod_mask = KM_RSHIFT; break; case KC_LALT: mod_mask = KM_LALT; break; case KC_RALT: mod_mask = KM_RALT; break; default: mod_mask = 0; break; } if (mod_mask != 0) { if (type == KEY_PRESS) kdev->mods = kdev->mods | mod_mask; else kdev->mods = kdev->mods & ~mod_mask; } switch (key) { case KC_CAPS_LOCK: mod_mask = KM_CAPS_LOCK; break; case KC_NUM_LOCK: mod_mask = KM_NUM_LOCK; break; case KC_SCROLL_LOCK: mod_mask = KM_SCROLL_LOCK; break; default: mod_mask = 0; break; } if (mod_mask != 0) { if (type == KEY_PRESS) { /* * Only change lock state on transition from released * to pressed. This prevents autorepeat from messing * up the lock state. */ kdev->mods = kdev->mods ^ (mod_mask & ~kdev->lock_keys); kdev->lock_keys = kdev->lock_keys | mod_mask; /* Update keyboard lock indicator lights. */ (*kdev->ctl_ops->set_ind)(kdev, kdev->mods); } else { kdev->lock_keys = kdev->lock_keys & ~mod_mask; } } if (type == KEY_PRESS && (kdev->mods & KM_LCTRL) && key == KC_F1) { layout_destroy(kdev->active_layout); kdev->active_layout = layout_create(layout[0]); return; } if (type == KEY_PRESS && (kdev->mods & KM_LCTRL) && key == KC_F2) { layout_destroy(kdev->active_layout); kdev->active_layout = layout_create(layout[1]); return; } if (type == KEY_PRESS && (kdev->mods & KM_LCTRL) && key == KC_F3) { layout_destroy(kdev->active_layout); kdev->active_layout = layout_create(layout[2]); return; } if (type == KEY_PRESS && (kdev->mods & KM_LCTRL) && key == KC_F4) { layout_destroy(kdev->active_layout); kdev->active_layout = layout_create(layout[3]); return; } ev.type = type; ev.key = key; ev.mods = kdev->mods; ev.c = layout_parse_ev(kdev->active_layout, &ev); async_exch_t *exch = async_exchange_begin(client_sess); async_msg_4(exch, INPUT_EVENT_KEY, ev.type, ev.key, ev.mods, ev.c); async_exchange_end(exch); }