OwbN800: owb-n800.patch

File owb-n800.patch, 8.8 kB (added by odole, 1 year ago)

OWB patch for N800

  • WebKit/OrigynWebBrowser/OrigynLauncher/main.cpp

    old new  
    4848#include "BTLogHelper.h" 
    4949#include "BTDeviceChannel.h" 
    5050#include "BTTextLogFormatter.h" 
    51 #include "CookieJar.h" 
     51#include "IntRect.h" 
    5252#include "KURL.h" 
    5353#include "wtf/RefPtr.h" 
    5454#ifdef __OWBAL_PLATFORM_MACPORT__ 
     
    5757#endif 
    5858#include <signal.h> 
    5959 
     60// Include for N800 port 
     61#include <hildon-widgets/hildon-program.h> 
     62#include <gtk/gtkmain.h> 
     63#include <gtk/gtk.h> 
     64#include <SDL/SDL_syswm.h> 
     65#include <X11/Xlib.h> 
     66 
    6067/** 
    6168 * Signal 11 catcher to prevent process from freezing on segfaults. 
    6269 */ 
     
    6875 
    6976using namespace BAL; 
    7077 
     78static HildonWindow *gtk_window = NULL; 
     79 
     80GtkWidget *butt_back = NULL; 
     81GtkWidget *butt_next = NULL; 
     82GtkWidget *text_url  = NULL; 
     83 
     84 
     85//static gboolean gtkExited(void* data) 
     86static void owbQuit() 
     87{ 
     88    getBIEventLoop()->PushEvent(createBIWindowEvent(BAL::BIWindowEvent::QUIT, false, WebCore::IntRect(), getBIWindowManager()->activeWindow()->widget())); 
     89} 
     90 
     91static void urlBack() 
     92{ 
     93    getBIWindowManager()->activeWindow()->goBackOrForward(-1);; 
     94} 
     95 
     96static void urlNext() 
     97{ 
     98    getBIWindowManager()->activeWindow()->goBackOrForward(1); 
     99} 
     100 
     101static void urlGo() 
     102{ 
     103    KURL url(gtk_entry_get_text(GTK_ENTRY(text_url))); 
     104    getBIWindowManager()->activeWindow()->setURL(url); 
     105} 
     106 
    71107static void handle_event( BIEventLoop& aEventLoop ) { 
    72108    BIEvent* aEvent = NULL; 
    73109    bool isQuitCalled = false; 
     
    78114            delete aEvent; 
    79115            aEvent = NULL; // otherwise may be freed twice if WaitEvent returns an invalid event 
    80116        } 
    81          
     117 
     118        gtk_widget_set_sensitive(butt_back, getBIWindowManager()->activeWindow()->canGoBackOrForward(-1)); 
     119        gtk_widget_set_sensitive(butt_next, getBIWindowManager()->activeWindow()->canGoBackOrForward(1)); 
     120        gtk_main_iteration_do(false);//FMD: call gtk iteration 
     121 
    82122        isEventValid = aEventLoop.WaitEvent(aEvent); 
    83123        if (isEventValid) { 
    84124            BIKeyboardEvent* aKeyboardEvent = aEvent->queryIsKeyboardEvent(); 
     
    100140    } 
    101141} 
    102142 
     143void GtkInitN800(int argc, char *argv[]) 
     144{ 
     145    /* Create needed variables */ 
     146    HildonProgram *program; 
     147    HildonWindow *window; 
     148 
     149    /* Initialize the GTK. */ 
     150    gtk_init(&argc, &argv); 
     151 
     152    /* Create the hildon program and setup the title */ 
     153    program = HILDON_PROGRAM(hildon_program_get_instance()); 
     154    g_set_application_name("Origyn Web Browser"); 
     155 
     156    /* Create HildonWindow and set it to HildonProgram */ 
     157    window = HILDON_WINDOW(hildon_window_new()); 
     158    hildon_program_add_window(program, window); 
     159 
     160    butt_back = gtk_button_new_with_label("Back"); 
     161    GtkWidget* img_back = gtk_image_new_from_file("/usr/share/icons/back.png"); 
     162    gtk_button_set_image(GTK_BUTTON(butt_back), img_back); 
     163    gtk_button_set_relief(GTK_BUTTON(butt_back), GTK_RELIEF_NONE); 
     164 
     165    butt_next = gtk_button_new_with_label("Next"); 
     166    GtkWidget* img_next = gtk_image_new_from_file("/usr/share/icons/next.png"); 
     167    gtk_button_set_image(GTK_BUTTON(butt_next), img_next); 
     168    gtk_button_set_relief(GTK_BUTTON(butt_next), GTK_RELIEF_NONE); 
     169 
     170    text_url = gtk_entry_new(); 
     171    gtk_entry_set_width_chars(GTK_ENTRY(text_url), 20); 
     172 
     173    GtkContainer *navbar= GTK_CONTAINER(gtk_toolbar_new()); 
     174    gtk_toolbar_append_widget(GTK_TOOLBAR(navbar), butt_back, "go back", "go back"); 
     175    gtk_toolbar_append_widget(GTK_TOOLBAR(navbar), butt_next, "go next", "go next"); 
     176    gtk_toolbar_append_widget(GTK_TOOLBAR(navbar), text_url , "enter url ", "enter url "); 
     177    hildon_window_add_toolbar(window, GTK_TOOLBAR(navbar)); 
     178 
     179    g_signal_connect(G_OBJECT(butt_back), "clicked", urlBack, NULL); 
     180    g_signal_connect(G_OBJECT(butt_next), "clicked", urlNext, NULL); 
     181    g_signal_connect(G_OBJECT(text_url), "activate", urlGo, NULL); 
     182    gtk_entry_set_invisible_char(GTK_ENTRY(text_url), 0); 
     183 
     184    /* Connect signal to X in the upper corner */ 
     185    g_signal_connect(G_OBJECT(window), "delete_event", owbQuit, NULL); 
     186 
     187    /* Begin the main application */ 
     188    gtk_widget_show_all(GTK_WIDGET(window)); 
     189    gtk_window = window; 
     190} 
     191 
     192 
    103193int main(int argc, char *argv[]) 
    104194{ 
    105195    signal(SIGSEGV, &signalCatcher); 
     
    114204#endif 
    115205 
    116206    // FIXME first thing to do, because event loop may rely on GraphicsDevice (eg SDL) 
    117     getBIGraphicsDevice()->initialize(800, 600, 32); 
     207    GtkInitN800(0, NULL); 
     208    getBIGraphicsDevice()->initialize(690, 360, 16); 
    118209    BIEventLoop* aEventLoop = getBIEventLoop(); 
    119210    if( aEventLoop == NULL ) { 
    120211      printf("No event loop\n"); 
     
    122213    } 
    123214 
    124215#if 1 
    125     BIWindow *window = getBIWindowManager()->openWindow(10, 10, 780, 580); 
     216    BIWindow *window = getBIWindowManager()->openWindow(0, 0, 690, 360); 
    126217#else // code below left as example 
    127218    BIWindow *window = getBIWindowManager()->openWindow(10, 10, 385,  
    128219285); 
     
    138229    } else { 
    139230        window->setURL("http://www.google.com"); 
    140231    } 
     232 
     233    SDL_SysWMinfo sdl_info; 
     234    memset (&sdl_info, 0, sizeof(sdl_info)); 
     235    SDL_VERSION(&sdl_info.version); 
     236    if (SDL_GetWMInfo(&sdl_info) <= 0 || sdl_info.subsystem != SDL_SYSWM_X11) { 
     237        fprintf (stderr, "This is not X11\n"); 
     238        memset (&sdl_info, 0, sizeof(sdl_info)); 
     239    } 
     240 
     241    Display *sdl_display = sdl_info.info.x11.display; 
     242    Window sdl_window = sdl_info.info.x11.wmwindow; 
     243    Window xwin = GDK_WINDOW_XWINDOW(GTK_WIDGET(gtk_window)->window); 
     244    XReparentWindow(sdl_display, sdl_info.info.x11.wmwindow, xwin, 10, 0); 
     245    XReparentWindow(sdl_display, sdl_info.info.x11.window, xwin, 10, 0); 
     246    XSetInputFocus(sdl_display, sdl_info.info.x11.window, RevertToParent, CurrentTime); 
     247 
    141248    handle_event( *aEventLoop ); 
    142249    getBIWindowManager()->closeWindow(window); 
    143250    delete getBIWindowManager(); 
  • CMakeLists.txt

    old new  
    432432        pthread  
    433433    ) 
    434434 
    435         ADD_EXECUTABLE (testkjs JavaScriptCore/kjs/testkjs.cpp) 
    436         TARGET_LINK_LIBRARIES (testkjs 
    437                 jscore 
    438                 bal 
    439         ) 
    440  
    441435IF (OWBAL_PLATFORM_MACPORT) 
    442436    TARGET_LINK_LIBRARIES (jscore 
    443437        ${LIBICU_LIBS} 
     
    447441    ) 
    448442ENDIF (OWBAL_PLATFORM_MACPORT) 
    449443 
    450         ADD_CUSTOM_TARGET (kjstests 
    451                 COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/export_test_kjs 
    452                 COMMAND cd KjsTests/mozilla/ && ${PERL_EXECUTABLE} mklistpage.pl > menubody.html 
    453                 COMMAND cd KjsTests/mozilla/ && cat menuhead.html menubody.html menufoot.html > menu.html 
    454                 COMMAND cd KjsTests/mozilla/ && SYMROOTS=${CMAKE_CURRENT_SOURCE_DIR}/JavaScriptCore ./jsDriver.pl -e kjs -s ${CMAKE_CURRENT_BINARY_DIR}/testkjs -f results.html 
    455                 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 
    456         ) 
    457         ADD_DEPENDENCIES (kjstests 
    458                 testkjs 
    459         ) 
    460  
    461444ELSE (WEBKIT_USE_JS) 
    462445        ADD_LIBRARY (wtf ${jscore_SRC}) 
    463446ENDIF (WEBKIT_USE_JS) 
     
    509492        balglue 
    510493        bal 
    511494        ${ADDONS_LINK} 
     495        ${GTK_LIBRARIES} 
    512496        ${LIBFREETYPE_LIBS} 
    513497        ${LIBRARIES_TO_LINK} 
    514498) 
     
    526510############################## 
    527511############################## 
    528512############################## 
    529 #BAL_TEST 
    530 ############################## 
    531 ############################## 
    532 ############################## 
    533  
    534 INCLUDE_DIRECTORIES ( 
    535     ${CMAKE_CURRENT_SOURCE_DIR}/BAL/Tests/ 
    536     ${CMAKE_CURRENT_SOURCE_DIR}/BAL/Implementations/Widgets/Common/ 
    537 ) 
    538  
    539 INCLUDE (BAL/Tests/SourcesCMakeLists.txt) 
    540 ADD_EXECUTABLE (testBAL ${bal_tests_SRC}) 
    541 TARGET_LINK_LIBRARIES (testBAL 
    542     bal 
    543 ) 
    544  
    545 IF (WEBKIT_USE_JS) 
    546         TARGET_LINK_LIBRARIES (testBAL 
    547                 jscore 
    548         ) 
    549 ELSE (WEBKIT_USE_JS) 
    550         TARGET_LINK_LIBRARIES (testBAL 
    551                 wtf 
    552         ) 
    553 ENDIF (WEBKIT_USE_JS) 
    554  
    555 ADD_CUSTOM_TARGET (test 
    556         COMMAND ${CMAKE_CURRENT_BINARY_DIR}/testBAL -a -p ${CMAKE_CURRENT_SOURCE_DIR}/BAL/Tests/ 
    557         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 
    558 ) 
    559 ADD_DEPENDENCIES (test 
    560         testBAL 
    561         ) 
    562 ############################## 
    563 ############################## 
    564 ############################## 
    565513#DUMP_RENDER_TREE 
    566514############################## 
    567515############################## 
  • BAL/CMakeConf.txt

    old new  
    334334 
    335335ENDIF (WEBKIT_USE_XSLT_SUPPORT) 
    336336 
     337 
    337338####################################### 
     339#Add Hildon libraries for N800 
     340####################################### 
     341 
     342SET (CMAKE_GTK_CXX_FLAGS "`pkg-config  --cflags gtk+-2.0 hildon-libs`") 
     343SET(GTK_LIBRARIES "`pkg-config --libs gtk+-2.0 hildon-libs`") 
     344SET_SOURCE_FILES_PROPERTIES(WebKit/OrigynWebBrowser/OrigynLauncher/main.cpp  
     345                PROPERTIES COMPILE_FLAGS "`pkg-config  --cflags gtk+-2.0 hildon-libs` -I${CMAKE_CURRENT_SOURCE_DIR}/WebKit/OrigynWebBrowser/Api/") 
     346 
     347####################################### 
    338348#Configuration for font 
    339349####################################### 
    340350