diff options
| author | Joakim Verona | 2011-06-22 18:55:01 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-06-22 18:55:01 +0200 |
| commit | bccbbe01e0d0a9fcd86e516372d13a347481808f (patch) | |
| tree | 3c56bf4e7284dc7bfcefdd13cd64e5180b5e27b5 /src/xwidget.c | |
| parent | c20c683273e27d1682982c609bf3fce7eeca7f7d (diff) | |
| download | emacs-bccbbe01e0d0a9fcd86e516372d13a347481808f.tar.gz emacs-bccbbe01e0d0a9fcd86e516372d13a347481808f.zip | |
shows and hides the button created using xwidget-demo-minimal adequately with several windows and even several frames which is a first ever! segfaults after a while probably leaking or something.
Diffstat (limited to 'src/xwidget.c')
| -rw-r--r-- | src/xwidget.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index 0acacbde951..389e6a655ff 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -802,21 +802,13 @@ xwidget_touched (struct xwidget_view *xw) | |||
| 802 | void | 802 | void |
| 803 | xwidget_end_redisplay (struct glyph_matrix *matrix) | 803 | xwidget_end_redisplay (struct glyph_matrix *matrix) |
| 804 | { | 804 | { |
| 805 | return; //until I convert this to MVC | 805 | //return; //until I convert this to MVC |
| 806 | |||
| 807 | 806 | ||
| 808 | 807 | ||
| 809 | int i; | 808 | int i; |
| 810 | struct xwidget *xw; | 809 | struct xwidget *xw; |
| 811 | int area; | 810 | int area; |
| 812 | 811 | ||
| 813 | //dont change anything if minibuffer is selected this redisplay | ||
| 814 | //this is mostly a workaround to reduce the phantoming of xwidgets | ||
| 815 | // this is special case handling and it doesnt work too well. | ||
| 816 | /* if( (XWINDOW (FRAME_MINIBUF_WINDOW (SELECTED_FRAME()))) == */ | ||
| 817 | /* (XWINDOW (FRAME_SELECTED_WINDOW (SELECTED_FRAME())))) */ | ||
| 818 | /* return; */ | ||
| 819 | |||
| 820 | region_modified = 0; | 812 | region_modified = 0; |
| 821 | xwidget_start_redisplay (); | 813 | xwidget_start_redisplay (); |
| 822 | //iterate desired glyph matrix of "live" window here, hide gtk widgets | 814 | //iterate desired glyph matrix of "live" window here, hide gtk widgets |
| @@ -855,7 +847,13 @@ xwidget_end_redisplay (struct glyph_matrix *matrix) | |||
| 855 | { | 847 | { |
| 856 | // printf("row %d not enabled\n", i); | 848 | // printf("row %d not enabled\n", i); |
| 857 | } | 849 | } |
| 858 | xwidget_touch (&xwidgets[glyph->u.xwidget_id]); | 850 | /* |
| 851 | the only call to xwidget_end_redisplay is in dispnew and looks like: | ||
| 852 | if ((XWINDOW(FRAME_SELECTED_WINDOW (SELECTED_FRAME()))) == (w)) | ||
| 853 | xwidget_end_redisplay(w->current_matrix); | ||
| 854 | */ | ||
| 855 | xwidget_touch (xwidget_view_lookup(&xwidgets[glyph->u.xwidget_id], | ||
| 856 | (XWINDOW(FRAME_SELECTED_WINDOW (SELECTED_FRAME()))))); | ||
| 859 | } | 857 | } |
| 860 | } | 858 | } |
| 861 | } | 859 | } |
| @@ -864,13 +862,14 @@ xwidget_end_redisplay (struct glyph_matrix *matrix) | |||
| 864 | 862 | ||
| 865 | for (i = 0; i < MAX_XWIDGETS; i++) | 863 | for (i = 0; i < MAX_XWIDGETS; i++) |
| 866 | { | 864 | { |
| 867 | xw = &xwidgets[i]; | 865 | struct xwidget_view* xv = &xwidget_views[i]; |
| 868 | if (xw->initialized) | 866 | |
| 867 | if (xv->initialized && ( xv->w == (XWINDOW(FRAME_SELECTED_WINDOW (SELECTED_FRAME()))))) | ||
| 869 | { | 868 | { |
| 870 | if (xwidget_touched(xw)) | 869 | if (xwidget_touched(xv)) |
| 871 | xwidget_show (xw); | 870 | xwidget_show_view (xv); |
| 872 | else | 871 | else |
| 873 | xwidget_hide (xw); | 872 | xwidget_hide_view (xv); |
| 874 | } | 873 | } |
| 875 | } | 874 | } |
| 876 | } | 875 | } |