projects
/
projects
/
chimara
/
chimara.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Started using thread-private data. Multisession still doesn't work, but regular opera...
[projects/chimara/chimara.git]
/
libchimara
/
window.c
diff --git
a/libchimara/window.c
b/libchimara/window.c
index dea1fb60c64f76fcb35263ba7bcba635220ab296..bbfe49db68658f134ee667503044a19b5117ceb3 100644
(file)
--- a/
libchimara/window.c
+++ b/
libchimara/window.c
@@
-1,8
+1,9
@@
+#include <glib.h>
#include "window.h"
#include "magic.h"
#include "chimara-glk-private.h"
#include "window.h"
#include "magic.h"
#include "chimara-glk-private.h"
-extern
ChimaraGlkPrivate *glk_data
;
+extern
GPrivate *glk_data_key
;
/**
* glk_window_iterate:
/**
* glk_window_iterate:
@@
-25,6
+26,7
@@
glk_window_iterate(winid_t win, glui32 *rockptr)
{
VALID_WINDOW_OR_NULL(win, return NULL);
{
VALID_WINDOW_OR_NULL(win, return NULL);
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
GNode *retnode;
if(win == NULL)
GNode *retnode;
if(win == NULL)
@@
-135,6
+137,7
@@
glk_window_get_sibling(winid_t win)
winid_t
glk_window_get_root()
{
winid_t
glk_window_get_root()
{
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
if(glk_data->root_window == NULL)
return NULL;
return (winid_t)glk_data->root_window->data;
if(glk_data->root_window == NULL)
return NULL;
return (winid_t)glk_data->root_window->data;
@@
-377,6
+380,8
@@
glk_window_open(winid_t split, glui32 method, glui32 size, glui32 wintype,
g_return_val_if_fail(method == (method & (winmethod_DirMask | winmethod_DivisionMask)), NULL);
g_return_val_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size > 100), NULL);
g_return_val_if_fail(method == (method & (winmethod_DirMask | winmethod_DivisionMask)), NULL);
g_return_val_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size > 100), NULL);
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+
if(split == NULL && glk_data->root_window != NULL)
{
ILLEGAL("Tried to open a new root window, but there is already a root window");
if(split == NULL && glk_data->root_window != NULL)
{
ILLEGAL("Tried to open a new root window, but there is already a root window");
@@
-454,6
+459,9
@@
glk_window_open(winid_t split, glui32 method, glui32 size, glui32 wintype,
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(textview), GTK_WRAP_WORD_CHAR );
gtk_text_view_set_editable( GTK_TEXT_VIEW(textview), FALSE );
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(textview), GTK_WRAP_WORD_CHAR );
gtk_text_view_set_editable( GTK_TEXT_VIEW(textview), FALSE );
+ gtk_text_view_set_pixels_inside_wrap( GTK_TEXT_VIEW(textview), 3 );
+ gtk_text_view_set_left_margin( GTK_TEXT_VIEW(textview), 20 );
+ gtk_text_view_set_right_margin( GTK_TEXT_VIEW(textview), 20 );
gtk_container_add( GTK_CONTAINER(scrolledwindow), textview );
gtk_widget_show_all(scrolledwindow);
gtk_container_add( GTK_CONTAINER(scrolledwindow), textview );
gtk_widget_show_all(scrolledwindow);
@@
-698,6
+706,8
@@
void
glk_window_close(winid_t win, stream_result_t *result)
{
VALID_WINDOW(win, return);
glk_window_close(winid_t win, stream_result_t *result)
{
VALID_WINDOW(win, return);
+
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
gdk_threads_enter(); /* Prevent redraw while we're trashing the window */
gdk_threads_enter(); /* Prevent redraw while we're trashing the window */
@@
-807,6
+817,8
@@
glk_window_clear(winid_t win)
{
VALID_WINDOW(win, return);
g_return_if_fail(win->input_request_type != INPUT_REQUEST_LINE && win->input_request_type != INPUT_REQUEST_LINE_UNICODE);
{
VALID_WINDOW(win, return);
g_return_if_fail(win->input_request_type != INPUT_REQUEST_LINE && win->input_request_type != INPUT_REQUEST_LINE_UNICODE);
+
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
switch(win->type)
{
switch(win->type)
{
@@
-973,6
+985,8
@@
glk_window_get_size(winid_t win, glui32 *widthptr, glui32 *heightptr)
{
VALID_WINDOW(win, return);
{
VALID_WINDOW(win, return);
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+
switch(win->type)
{
case wintype_Blank:
switch(win->type)
{
case wintype_Blank:
@@
-1100,6
+1114,8
@@
glk_window_set_arrangement(winid_t win, glui32 method, glui32 size, winid_t keyw
}
g_return_if_fail(method == (method & (winmethod_DirMask | winmethod_DivisionMask)));
g_return_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size > 100));
}
g_return_if_fail(method == (method & (winmethod_DirMask | winmethod_DivisionMask)));
g_return_if_fail(!(((method & winmethod_DivisionMask) == winmethod_Proportional) && size > 100));
+
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
win->split_method = method;
win->constraint_size = size;
win->split_method = method;
win->constraint_size = size;
@@
-1174,6
+1190,8
@@
glk_window_move_cursor(winid_t win, glui32 xpos, glui32 ypos)
{
VALID_WINDOW(win, return);
g_return_if_fail(win->type == wintype_TextGrid);
{
VALID_WINDOW(win, return);
g_return_if_fail(win->type == wintype_TextGrid);
+
+ ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
/* Wait until the window's size is current */
g_mutex_lock(glk_data->arrange_lock);
/* Wait until the window's size is current */
g_mutex_lock(glk_data->arrange_lock);